Size: a a a

ClickHouse не тормозит

2021 February 05

8S

87198 Skripko in ClickHouse не тормозит
В PROCESSLIST висит
| 24 | reader          | adm-test-ch1.partner.ru:41276 | test | Sleep   | 14337 |                        | NULL
источник

T

T in ClickHouse не тормозит
Всем привет, подскажите пожалуйста за что отвечает ОСный процесс clickhouse-watchdog рядом с /usr/bin/clickhouse-server?
источник

SB

Sergey Bubnov in ClickHouse не тормозит
Всем привет. Делал тут инсерт 10к записей раз пару секунд и словил такую ошибку
"Too many partitions for single INSERT block". Партиция у меня на дату по дням стоит и очевидно что в пачке из 10к будет куча одинаковых дат, так как пишу события по дням.
Нормально ли будет увеличить max_partitions_per_insert_block до 10к или это как-то скажется на скорости/ресурсах и так вообще неользя делать?
источник

AK

Anton Khokhrin in ClickHouse не тормозит
Sergey Bubnov
Всем привет. Делал тут инсерт 10к записей раз пару секунд и словил такую ошибку
"Too many partitions for single INSERT block". Партиция у меня на дату по дням стоит и очевидно что в пачке из 10к будет куча одинаковых дат, так как пишу события по дням.
Нормально ли будет увеличить max_partitions_per_insert_block до 10к или это как-то скажется на скорости/ресурсах и так вообще неользя делать?
Ошибка про то, что ваш инсерт вставляет во много партиции разом, а не про много записей в одну
источник

SB

Sergey Bubnov in ClickHouse не тормозит
Anton Khokhrin
Ошибка про то, что ваш инсерт вставляет во много партиции разом, а не про много записей в одну
а, хм. Тость наоборот там разные даты?
источник

AK

Anton Khokhrin in ClickHouse не тормозит
Sergey Bubnov
а, хм. Тость наоборот там разные даты?
Да
источник

M

Mishanya in ClickHouse не тормозит
Sergey Bubnov
Всем привет. Делал тут инсерт 10к записей раз пару секунд и словил такую ошибку
"Too many partitions for single INSERT block". Партиция у меня на дату по дням стоит и очевидно что в пачке из 10к будет куча одинаковых дат, так как пишу события по дням.
Нормально ли будет увеличить max_partitions_per_insert_block до 10к или это как-то скажется на скорости/ресурсах и так вообще неользя делать?
Скорость инсерта снизится, тк ваш батч затрагиваетт слишком много партиций -> больше файлов. Так же в будущем будут замедлятся селекты, которые имеют(в вашем примере) выборку больше дня, тк читать много файликов приходится. Так же это генерит невероятное количество партов. Сам сталкивался с такой проблемой - пришлоись репартиционировать таблицу.
источник

SB

Sergey Bubnov in ClickHouse не тормозит
Mishanya
Скорость инсерта снизится, тк ваш батч затрагиваетт слишком много партиций -> больше файлов. Так же в будущем будут замедлятся селекты, которые имеют(в вашем примере) выборку больше дня, тк читать много файликов приходится. Так же это генерит невероятное количество партов. Сам сталкивался с такой проблемой - пришлоись репартиционировать таблицу.
А как? По месяцам?
источник

M

Mishanya in ClickHouse не тормозит
Sergey Bubnov
А как? По месяцам?
Да, я пришел к выводу что это самое оптимальное значение.
Ну я переодически чатик читаю, многие приходят к такому выводу. Так же туторах для кх тоже советуют использовать именно так.
Конечно же, все депендс от вашей специфики и конкретных кейсов.
источник

SB

Sergey Bubnov in ClickHouse не тормозит
Mishanya
Да, я пришел к выводу что это самое оптимальное значение.
Ну я переодически чатик читаю, многие приходят к такому выводу. Так же туторах для кх тоже советуют использовать именно так.
Конечно же, все депендс от вашей специфики и конкретных кейсов.
А если у меня таблица с примерно 300кк записями, как-то запросом можно определить, каких данных уникальных больше, чтобы например сделать репартицию например по какому-то типу. Например у меня есть тип события, там их всего штук 5 на все записи, а месцов очевидно больше и каждый раз будет больше. Имеет такое смысл? Или так же надо смотреть систему, какие вообще запросы и какие фильтры используются?
источник

SC

Smoked Cheese in ClickHouse не тормозит
Sergey Bubnov
А если у меня таблица с примерно 300кк записями, как-то запросом можно определить, каких данных уникальных больше, чтобы например сделать репартицию например по какому-то типу. Например у меня есть тип события, там их всего штук 5 на все записи, а месцов очевидно больше и каждый раз будет больше. Имеет такое смысл? Или так же надо смотреть систему, какие вообще запросы и какие фильтры используются?
count() и group by. Можно ещё uniq()
источник

M

Mishanya in ClickHouse не тормозит
Sergey Bubnov
А если у меня таблица с примерно 300кк записями, как-то запросом можно определить, каких данных уникальных больше, чтобы например сделать репартицию например по какому-то типу. Например у меня есть тип события, там их всего штук 5 на все записи, а месцов очевидно больше и каждый раз будет больше. Имеет такое смысл? Или так же надо смотреть систему, какие вообще запросы и какие фильтры используются?
Посчитайте количество уникальных значений, что бы найти коррелирующее значение, которое будет оптимально балансировать паратиции в рамках вашей специфики.
источник

SB

Sergey Bubnov in ClickHouse не тормозит
Smoked Cheese
count() и group by. Можно ещё uniq()
Да, точно. Но у меня например в системе поумолчанию фильтр по датам стоит с большим промежутком, однако фильтр на тип стоит всегда поумолчанию 1. Тоесть мы можем смотреть данные одного типа по разным датам. Однако можно поставить фильтр на дргой тип и надо будет делать join. Мб имеет смысл репартицию сделать на тип все же?
источник

SC

Smoked Cheese in ClickHouse не тормозит
Sergey Bubnov
Да, точно. Но у меня например в системе поумолчанию фильтр по датам стоит с большим промежутком, однако фильтр на тип стоит всегда поумолчанию 1. Тоесть мы можем смотреть данные одного типа по разным датам. Однако можно поставить фильтр на дргой тип и надо будет делать join. Мб имеет смысл репартицию сделать на тип все же?
Партиции больше для удобства, так что оставьте по дате. А в индекс на первое место поставьте тип.
источник

M

Mishanya in ClickHouse не тормозит
Sergey Bubnov
Да, точно. Но у меня например в системе поумолчанию фильтр по датам стоит с большим промежутком, однако фильтр на тип стоит всегда поумолчанию 1. Тоесть мы можем смотреть данные одного типа по разным датам. Однако можно поставить фильтр на дргой тип и надо будет делать join. Мб имеет смысл репартицию сделать на тип все же?
Так сделайте партиции по месяцу и в ключ оред бай поставьте колонку в начало с наибольшей кардинальностью - тип, в вашем примере.
источник

SB

Sergey Bubnov in ClickHouse не тормозит
Понял, спасибо. А как делать репартицию?
источник

SC

Smoked Cheese in ClickHouse не тормозит
Sergey Bubnov
Понял, спасибо. А как делать репартицию?
Только перевставлять данные
источник

M

Mishanya in ClickHouse не тормозит
Sergey Bubnov
Понял, спасибо. А как делать репартицию?
Создайте новоую таблицу и сделайте insert select
Потом можете посмотреть количество партов на примере двух этих таблиц и увидите колоссальную разницу
источник

SB

Sergey Bubnov in ClickHouse не тормозит
Понял, хорошая идея, спасибо!
источник

S

Slach in ClickHouse не тормозит
87198 Skripko
В PROCESSLIST висит
| 24 | reader          | adm-test-ch1.partner.ru:41276 | test | Sleep   | 14337 |                        | NULL
ну тогда видимо автору китайцу пишите issue на github
источник