Поправил ошибки в тексте
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.
|
В clickhouse нет auto increment поэтому в качестве primary key используется uuid.
|
||||||
В данном случае создана партицированная таблица с разбивкой по месяцам, поэтому мы обязаны при создании добавить поле в PRIMARY KEY и ORDER BY
|
В данном случае создана партицированная таблица с разбивкой по месяцам, поэтому мы обязаны при создании добавить поле в PRIMARY KEY и ORDER BY
|
||||||
Партиции позволяют ускорить запрос за счет того что выборка получается меньше по размерам. Вместо 1 большой таблицы на 10 миллионов записей, можно получить 10 виртуальных таблиц по 1 миллиону.
|
Партиции позволяют ускорить запрос за счет того что выборка получается меньше по размерам. Вместо 1 большой таблицы на 10 миллионов записей, можно получить 10 виртуальных таблиц по 1 миллиону.
|
||||||
При запросе к такой таблице clickhouse может перенаправить запрос только в нужные партиции тем самым избежав обхода лишнего колличества данных.
|
При запросе к такой таблице clickhouse может перенаправить запрос только в нужные партиции тем самым избежав обхода лишнего количества данных.
|
||||||
С точки зрения использования запрос не меняется. Мы по прежнему работаем с 1 таблицей. Всю магию по определению партиция и объединению результатов выборки clickhouse реализует под капотом.
|
С точки зрения использования запрос не меняется. Мы по прежнему работаем с 1 таблицей. Всю магию по определению партиция и объединению результатов выборки clickhouse реализует под капотом.
|
||||||
За счет этого, запросы получаются быстрее по сранению с классической single таблицей.
|
За счет этого, запросы получаются быстрее по сравнению с классической single таблицей.
|
||||||
|
|
||||||
По sql выше мы видим, что определение типов в запросе выглядит иначе по сранению с mysql.
|
По sql выше мы видим, что определение типов в запросе выглядит иначе по сравнению с mysql.
|
||||||
Информацию по типам можно найти в оффициальной документации в этом разделе https://clickhouse.com/docs/ru/sql-reference/data-types/int-uint.
|
Информацию по типам можно найти в официальной документации в этом разделе https://clickhouse.com/docs/ru/sql-reference/data-types/int-uint.
|
||||||
Наиболее явное отличие это определение nullable - оно связано с типом в отличие от mysql.
|
Наиболее явное отличие это определение nullable - оно связано с типом в отличие от mysql.
|
||||||
|
|
||||||
Дальше в запросе видно что мы указали engine для таблицы. В отличие от mysql, где на проекте обычно используется всегда один движок, в clickhouse нужно иметь понятие об их существовании и отличиях.
|
Дальше в запросе видно, что мы указали engine для таблицы. В отличие от mysql, где на проекте обычно используется всегда один движок, в clickhouse нужно иметь понятие об их существовании и отличиях.
|
||||||
Официальная документация тут https://clickhouse.com/docs/ru/engines/table-engines.
|
Официальная документация тут https://clickhouse.com/docs/ru/engines/table-engines.
|
||||||
Каждый движок несет свои уникальные возможности.
|
Каждый движок несет свои уникальные возможности.
|
||||||
Например:
|
Например:
|
||||||
@ -127,12 +127,12 @@ WHERE table = 'history';
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Здесь видно, что данные разбиты на 5 частей, не смотря на то что у нас три записи попадают в один месяц. При вставке clickhouse вставляет данные в отдельные куски и затем в фоне может их обрабатывать и объединять для оптимизации.
|
Здесь видно, что данные разбиты на 5 частей, несмотря на то что у нас три записи попадают в один месяц. При вставке clickhouse вставляет данные в отдельные куски и затем в фоне может их обрабатывать и объединять для оптимизации.
|
||||||
По окончанию мы увидим следующий результат
|
По окончанию мы увидим следующий результат
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Сейчас можно попробовать встаить такие данные
|
Сейчас можно попробовать вставить такие данные
|
||||||
```clickhouse
|
```clickhouse
|
||||||
insert into history SELECT generateUUIDv4(), 'device', generateUUIDv4(), rand32(), 'first_name', 'Denis', null, now();
|
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
|
```clickhouse
|
||||||
insert into history SELECT generateUUIDv4(), 'device2', generateUUIDv4(), rand32(), 'first_name', 'Denis', 3, now();
|
insert into history SELECT generateUUIDv4(), 'device2', generateUUIDv4(), rand32(), 'first_name', 'Denis', 3, now();
|
||||||
```
|
```
|
||||||
clickhouse выдает ошибку что значение enum нам не известно и возвращает ошибку.
|
clickhouse выдает ошибку, что значение enum нам не известно и возвращает ошибку.
|
||||||
|
|
||||||
## Модификация данных
|
## Модификация данных
|
||||||
В clickhouse нет классического редактирования данных. Отказ от update позволяет clickhouse быть таким быстрым.
|
В clickhouse нет классического редактирования данных. Отказ от update позволяет clickhouse быть таким быстрым.
|
||||||
@ -170,9 +170,9 @@ WHERE table = 'history';
|
|||||||
|
|
||||||
Из таблицы видно, что наш запрос был зарегистрирован в списке мутаций и что он уже выполнился.
|
Из таблицы видно, что наш запрос был зарегистрирован в списке мутаций и что он уже выполнился.
|
||||||
Особо сложные запросы могут выполняться часами.
|
Особо сложные запросы могут выполняться часами.
|
||||||
Такое обновление происходит асинхронно в фоне и не блочит работу таблицы.
|
Такое обновление происходит асинхронно в фоне и не блокирует работу таблицы.
|
||||||
Также можно заметить что изменения типа полей таблицы также были зарегистрированы в мутациях.
|
Также можно заметить что изменения типа полей таблицы также были зарегистрированы в мутациях.
|
||||||
Несмотря на то, что есть возможность редактировать данные - не стоит этим злоупотреблять. Если единовременно будет много мутаций в обработке, то это плохо скажется на производительности системы и может привести к ошибкам накатки мутаций.
|
Несмотря на то, что есть возможность редактировать данные, не стоит этим злоупотреблять. Если единовременно будет много мутаций в обработке, то это плохо скажется на производительности системы и может привести к ошибкам накатки мутаций.
|
||||||
Мутации следует использовать когда одним запросом можно привести данные к ожидаемому результату.
|
Мутации следует использовать когда одним запросом можно привести данные к ожидаемому результату.
|
||||||
Например, на основе одного поля рассчитать значения другого или скопировать значения поля из соседней таблицы в указанную.
|
Например, на основе одного поля рассчитать значения другого или скопировать значения поля из соседней таблицы в указанную.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user