Поправил ошибки в тексте

This commit is contained in:
Rinsvent 2023-06-12 20:02:20 +07:00
parent d2e5f2a475
commit b290e88046

View File

@ -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';
Из таблицы видно, что наш запрос был зарегистрирован в списке мутаций и что он уже выполнился.
Особо сложные запросы могут выполняться часами.
Такое обновление происходит асинхронно в фоне и не блочит работу таблицы.
Такое обновление происходит асинхронно в фоне и не блокирует работу таблицы.
Также можно заметить что изменения типа полей таблицы также были зарегистрированы в мутациях.
Несмотря на то, что есть возможность редактировать данные - не стоит этим злоупотреблять. Если единовременно будет много мутаций в обработке, то это плохо скажется на производительности системы и может привести к ошибкам накатки мутаций.
Несмотря на то, что есть возможность редактировать данные, не стоит этим злоупотреблять. Если единовременно будет много мутаций в обработке, то это плохо скажется на производительности системы и может привести к ошибкам накатки мутаций.
Мутации следует использовать когда одним запросом можно привести данные к ожидаемому результату.
Например, на основе одного поля рассчитать значения другого или скопировать значения поля из соседней таблицы в указанную.