Поправил ошибки в тексте
This commit is contained in:
parent
d2e5f2a475
commit
b290e88046
20
README.md
20
README.md
@ -56,15 +56,15 @@ ORDER BY (created_at, uuid);
|
||||
В clickhouse нет auto increment поэтому в качестве primary key используется uuid.
|
||||
В данном случае создана партицированная таблица с разбивкой по месяцам, поэтому мы обязаны при создании добавить поле в PRIMARY KEY и ORDER BY
|
||||
Партиции позволяют ускорить запрос за счет того что выборка получается меньше по размерам. Вместо 1 большой таблицы на 10 миллионов записей, можно получить 10 виртуальных таблиц по 1 миллиону.
|
||||
При запросе к такой таблице clickhouse может перенаправить запрос только в нужные партиции тем самым избежав обхода лишнего колличества данных.
|
||||
При запросе к такой таблице clickhouse может перенаправить запрос только в нужные партиции тем самым избежав обхода лишнего количества данных.
|
||||
С точки зрения использования запрос не меняется. Мы по прежнему работаем с 1 таблицей. Всю магию по определению партиция и объединению результатов выборки clickhouse реализует под капотом.
|
||||
За счет этого, запросы получаются быстрее по сранению с классической single таблицей.
|
||||
За счет этого, запросы получаются быстрее по сравнению с классической single таблицей.
|
||||
|
||||
По sql выше мы видим, что определение типов в запросе выглядит иначе по сранению с mysql.
|
||||
Информацию по типам можно найти в оффициальной документации в этом разделе https://clickhouse.com/docs/ru/sql-reference/data-types/int-uint.
|
||||
По sql выше мы видим, что определение типов в запросе выглядит иначе по сравнению с mysql.
|
||||
Информацию по типам можно найти в официальной документации в этом разделе https://clickhouse.com/docs/ru/sql-reference/data-types/int-uint.
|
||||
Наиболее явное отличие это определение nullable - оно связано с типом в отличие от mysql.
|
||||
|
||||
Дальше в запросе видно что мы указали engine для таблицы. В отличие от mysql, где на проекте обычно используется всегда один движок, в clickhouse нужно иметь понятие об их существовании и отличиях.
|
||||
Дальше в запросе видно, что мы указали engine для таблицы. В отличие от mysql, где на проекте обычно используется всегда один движок, в clickhouse нужно иметь понятие об их существовании и отличиях.
|
||||
Официальная документация тут https://clickhouse.com/docs/ru/engines/table-engines.
|
||||
Каждый движок несет свои уникальные возможности.
|
||||
Например:
|
||||
@ -127,12 +127,12 @@ WHERE table = 'history';
|
||||
|
||||
![img.png](images/partitions.png)
|
||||
|
||||
Здесь видно, что данные разбиты на 5 частей, не смотря на то что у нас три записи попадают в один месяц. При вставке clickhouse вставляет данные в отдельные куски и затем в фоне может их обрабатывать и объединять для оптимизации.
|
||||
Здесь видно, что данные разбиты на 5 частей, несмотря на то что у нас три записи попадают в один месяц. При вставке clickhouse вставляет данные в отдельные куски и затем в фоне может их обрабатывать и объединять для оптимизации.
|
||||
По окончанию мы увидим следующий результат
|
||||
|
||||
![img.png](images/partitions2.png)
|
||||
|
||||
Сейчас можно попробовать встаить такие данные
|
||||
Сейчас можно попробовать вставить такие данные
|
||||
```clickhouse
|
||||
insert into history SELECT generateUUIDv4(), 'device', generateUUIDv4(), rand32(), 'first_name', 'Denis', null, now();
|
||||
```
|
||||
@ -141,7 +141,7 @@ insert into history SELECT generateUUIDv4(), 'device', generateUUIDv4(), rand32(
|
||||
```clickhouse
|
||||
insert into history SELECT generateUUIDv4(), 'device2', generateUUIDv4(), rand32(), 'first_name', 'Denis', 3, now();
|
||||
```
|
||||
clickhouse выдает ошибку что значение enum нам не известно и возвращает ошибку.
|
||||
clickhouse выдает ошибку, что значение enum нам не известно и возвращает ошибку.
|
||||
|
||||
## Модификация данных
|
||||
В clickhouse нет классического редактирования данных. Отказ от update позволяет clickhouse быть таким быстрым.
|
||||
@ -170,9 +170,9 @@ WHERE table = 'history';
|
||||
|
||||
Из таблицы видно, что наш запрос был зарегистрирован в списке мутаций и что он уже выполнился.
|
||||
Особо сложные запросы могут выполняться часами.
|
||||
Такое обновление происходит асинхронно в фоне и не блочит работу таблицы.
|
||||
Такое обновление происходит асинхронно в фоне и не блокирует работу таблицы.
|
||||
Также можно заметить что изменения типа полей таблицы также были зарегистрированы в мутациях.
|
||||
Несмотря на то, что есть возможность редактировать данные - не стоит этим злоупотреблять. Если единовременно будет много мутаций в обработке, то это плохо скажется на производительности системы и может привести к ошибкам накатки мутаций.
|
||||
Несмотря на то, что есть возможность редактировать данные, не стоит этим злоупотреблять. Если единовременно будет много мутаций в обработке, то это плохо скажется на производительности системы и может привести к ошибкам накатки мутаций.
|
||||
Мутации следует использовать когда одним запросом можно привести данные к ожидаемому результату.
|
||||
Например, на основе одного поля рассчитать значения другого или скопировать значения поля из соседней таблицы в указанную.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user