Size: a a a

ClickHouse не тормозит

2019 December 05

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
32ГБ достаточно. Единственное что у меня настроено -Xms8g
Смотрите размер снепшота в момент заливки, может у вас вылетает за 32ГБ и надо тогда разбираться почему

еще echo mntr|nc localhost 2181 показывает размер базы в  zk_approximate_data_size
о... это уже что то... ок, через пару дней он загнется, буду смотреть что его убивает...
Xms емнип это начальный размер памяти у jvm? так?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Wolf Kreuzerkrieg
о... это уже что то... ок, через пару дней он загнется, буду смотреть что его убивает...
Xms емнип это начальный размер памяти у jvm? так?
да, и еще этот парамерт задает цель гарбадж коллектору, к которой надо стремится.
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
да, и еще этот парамерт задает цель гарбадж коллектору, к которой надо стремится.
Понятно. Будем проверять. спасибо за подсказки
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Wolf Kreuzerkrieg
о... это уже что то... ок, через пару дней он загнется, буду смотреть что его убивает...
Xms емнип это начальный размер памяти у jvm? так?
еще момент. Если реплика КХ выключается, она перестает читать и чистить свою очередь репликации и база ЗК естественно начинает расти, раньше она росла до бесконечности, теперь вроде есть какой-то предохранитель.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
И еще ЗК нужны SSD, иначе медленно работает, у жестких дисков только 200 seek/sec, <200 транзакций ЗК.
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
еще момент. Если реплика КХ выключается, она перестает читать и чистить свою очередь репликации и база ЗК естественно начинает расти, раньше она росла до бесконечности, теперь вроде есть какой-то предохранитель.
о.... это очень важный момент, потому что это то что у меня происходит... я поднимаю кластер КХ, делаю импорт на 400млрд строк, потом у меня это все наворачивается, я выкидываю кластер и поднимаю новый, навая база данных, новые таблицы. Т.е. количество даты у меня растет постоянно. Это с одной стороны, с другой стороны, ну сколько уже там той даты? не гигабайты. А какой предел у ЗК? там на самом деле стереть реплицируемую таблицу из ЗК берет больше часа, то еще мозгоклюйство...
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
насчет дисков, у меня EBS, SSDишный, но там IOPS не айс все равно, могу NVMe воткнуть, но он зараза эфемерный, не самая лучшая идея
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
у начальных EBS 3000iops -- тоже нормально.

>стереть реплицируемую таблицу из ЗК берет больше часа
что-то неправильно, слишком много партиций?
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
можно конечно provisioned EBS взять, но он дорогой... к скольки IOPS мы должны стремиться? я хочу потестить его с fio
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
у начальных EBS 3000iops -- тоже нормально.

>стереть реплицируемую таблицу из ЗК берет больше часа
что-то неправильно, слишком много партиций?
Море партиций, и тут мы выходим к следующему вопросу :)
Но сначала давай с ЗК закончим
3k IOPS по твоему достаточно? если так то хорошо, одной головной болью меньше
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Wolf Kreuzerkrieg
Море партиций, и тут мы выходим к следующему вопросу :)
Но сначала давай с ЗК закончим
3k IOPS по твоему достаточно? если так то хорошо, одной головной болью меньше
3k достаточно. В консоли у сервера(cloudwatch) видно сколько он жрет iops, проверьте есть там полочки из 3к или нет

и партиционирование важно, меняем PARTITION BY получаем разницу в 100 раз


You should not. When you insert every 5 minutes and your inserted rows cover 1 (sometimes 2) hour and the insert creates only one part.

I was talking about another case. Partition by (toStartOfHour(), other_column). If the batch (1 mil. rows) contains many (i.e. 10) different values of other_column (covers 10 partition) the batch (insert) will be separated to 10 parts. It has negative impact on performance.
For this case it should be 10 inserts (10 batches) with 1mil. rows each with only one other_column value.

CREATE TABLE bad
( k Int64, s String)
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/bad','{replica}')
PARTITION BY k ORDER BY s;

insert into bad select number, 'x' from numbers(110);
0 rows in set. Elapsed: 3.829 sec.
insert into bad select number, 'x' from numbers(110);
0 rows in set. Elapsed: 1.347 sec.  
insert into bad select number, 'x' from numbers(110);
0 rows in set. Elapsed: 0.874 sec.


CREATE TABLE good
( k Int64, s String)
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/good','{replica}')
PARTITION BY tuple() ORDER BY s;

insert into good select number, 'x' from numbers(110);
0 rows in set. Elapsed: 0.032 sec.
insert into good select number, 'x' from numbers(110);
0 rows in set. Elapsed: 0.013 sec.
insert into good select number, 'x' from numbers(110);
0 rows in set. Elapsed: 0.008 sec.
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
Чорт! Девопы то все посносили, уже ничего не могу проверить... Ладно, давай оставим это до тех времен пока оно снова не навернется, что бы было больше конкретики...
источник

AA

Aleksey Akulovich in ClickHouse не тормозит
Всем привет.
А может кто-нибудь подсказать, как понять, чем занята мутация? Запущена давно, счетчик партиций уменьшается понемногу, на нагрузка на сервер почти что никакущая. Чего он ждет, во что упирается?
источник

DL

Danil Lugovskoy in ClickHouse не тормозит
Есть ли какая-то, дефолтная агрегирующая функция у AggregatingMergeTree для Decimal колонок?
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
3k достаточно. В консоли у сервера(cloudwatch) видно сколько он жрет iops, проверьте есть там полочки из 3к или нет

и партиционирование важно, меняем PARTITION BY получаем разницу в 100 раз


You should not. When you insert every 5 minutes and your inserted rows cover 1 (sometimes 2) hour and the insert creates only one part.

I was talking about another case. Partition by (toStartOfHour(), other_column). If the batch (1 mil. rows) contains many (i.e. 10) different values of other_column (covers 10 partition) the batch (insert) will be separated to 10 parts. It has negative impact on performance.
For this case it should be 10 inserts (10 batches) with 1mil. rows each with only one other_column value.

CREATE TABLE bad
( k Int64, s String)
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/bad','{replica}')
PARTITION BY k ORDER BY s;

insert into bad select number, 'x' from numbers(110);
0 rows in set. Elapsed: 3.829 sec.
insert into bad select number, 'x' from numbers(110);
0 rows in set. Elapsed: 1.347 sec.  
insert into bad select number, 'x' from numbers(110);
0 rows in set. Elapsed: 0.874 sec.


CREATE TABLE good
( k Int64, s String)
ENGINE = ReplicatedMergeTree ('/clickhouse/{cluster}/tables/good','{replica}')
PARTITION BY tuple() ORDER BY s;

insert into good select number, 'x' from numbers(110);
0 rows in set. Elapsed: 0.032 sec.
insert into good select number, 'x' from numbers(110);
0 rows in set. Elapsed: 0.013 sec.
insert into good select number, 'x' from numbers(110);
0 rows in set. Elapsed: 0.008 sec.
У меня партицирование по месяцам, проблема в том что есть параллельные вставления, они плодят парты, пока файлы мелкие получается много партов, и я вставляю через Buffer Engine что бы их было поменьше. В конце я имею не так уж много партов на месяц, штуки три, ну максимум пять. но это одна сторона медали, вторая сторона связана с моим вторым вопросом. И да, я не правильно итерпретировал твой вопрос, партиций не много, много партов.
источник

L

Lesha in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
Какой-то бред. Зачем насиловать все insert-ми, если можно просто скопировать файлы?
У меня на lcal_table завязаны еще мат вьюшки, которые по объемам больше исходных таблиц. Не хочу их же через сеть тащить. Думал создать пустые MV и сделать инсерт из remote.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Danil Lugovskoy
Есть ли какая-то, дефолтная агрегирующая функция у AggregatingMergeTree для Decimal колонок?
если функция не упомянута в AggregatingMergeTree и поле не в ключе, для любого типа данных AggregatingMergeTree берет any
т.е. при схлопывании строк по первичному ключу, будут вычислены state функции, для остальных столбцов подставится какое-то значение из любой строки.
источник

DL

Danil Lugovskoy in ClickHouse не тормозит
круто, спасибо
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Wolf Kreuzerkrieg
У меня партицирование по месяцам, проблема в том что есть параллельные вставления, они плодят парты, пока файлы мелкие получается много партов, и я вставляю через Buffer Engine что бы их было поменьше. В конце я имею не так уж много партов на месяц, штуки три, ну максимум пять. но это одна сторона медали, вторая сторона связана с моим вторым вопросом. И да, я не правильно итерпретировал твой вопрос, партиций не много, много партов.
значит дело в чем-то другом. Парты это не проблема.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Lesha
У меня на lcal_table завязаны еще мат вьюшки, которые по объемам больше исходных таблиц. Не хочу их же через сеть тащить. Думал создать пустые MV и сделать инсерт из remote.
мне этого не понять.
Инсерт вам даст максимум пару миллионов строк в секунду, файлы с партами у меня копируются со скоростью примерно в 500раз выше.
источник