Size: a a a

ClickHouse не тормозит

2020 August 26

D

Dj in ClickHouse не тормозит
87198 Skripko
Коллеги, привет! После обновления на version 20.6.3 с version 20.5.2.7 перестали работать внешние ODBC словари
2020.08.17 06:24:10.692951 [ 59293 ] {} <Error> ExternalDictionariesLoader: Could not load external dictionary 'default.dict_competitor_price', next update is scheduled at 2020-08-17 06:34:10: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, Stack trace (when copying this message, always include the lines below):
Кто-нибудь сталкивался?
та же проблема, оно у вас решилось?
источник

D

Dj in ClickHouse не тормозит
87198 Skripko
Коллеги, привет! После обновления на version 20.6.3 с version 20.5.2.7 перестали работать внешние ODBC словари
2020.08.17 06:24:10.692951 [ 59293 ] {} <Error> ExternalDictionariesLoader: Could not load external dictionary 'default.dict_competitor_price', next update is scheduled at 2020-08-17 06:34:10: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, Stack trace (when copying this message, always include the lines below):
Кто-нибудь сталкивался?
источник

3

3ldar in ClickHouse не тормозит
Кто-нибудь сталкивался с ошибкой Table was not dropped because ZooKeeper session has expired? Как её можно обойти? Удаление на конкретном хосте не помогло
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
3ldar
Кто-нибудь сталкивался с ошибкой Table was not dropped because ZooKeeper session has expired? Как её можно обойти? Удаление на конкретном хосте не помогло
надо лог КХ смотреть на том хосте и лог зукипера

можно просто сделать detach table ... , удалить файлы на диске и ветку реплики в zk
источник

VM

Vadim Metikov in ClickHouse не тормозит
blkmrkt
а можно как-то закверить графитовые правила роллапа? А то я не уверен что они применились
Можно,
select * from system.graphite_retentions, мы так узнали,  что сломали ретеншены
источник

b

blkmrkt in ClickHouse не тормозит
Vadim Metikov
Можно,
select * from system.graphite_retentions, мы так узнали,  что сломали ретеншены
охх благодарю, попробую сейчас
источник

D

Dj in ClickHouse не тормозит
@den_crane а вы можете теги в ишщях выставлять? просто https://github.com/ClickHouse/ClickHouse/issues/13861 это баг. BW compatibility тут не причем. При создании словаря на odbc с нуля так же не работает...
источник

SD

Stanislav Didenko in ClickHouse не тормозит
Привет, подскажите пожалуйста, насколько важно для производительности select запросов в первичный ключ таблицы вставлять поле по которому часто происходит группировка (кортеж из нескольких полей) ? По партициям таблица разбита с учётом условий частых запросов, тут все ок. А вот как определять order by() для будущих группировок не очень понятно.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Stanislav Didenko
Привет, подскажите пожалуйста, насколько важно для производительности select запросов в первичный ключ таблицы вставлять поле по которому часто происходит группировка (кортеж из нескольких полей) ? По партициям таблица разбита с учётом условий частых запросов, тут все ок. А вот как определять order by() для будущих группировок не очень понятно.
ну вот совсем недавно запили оптимизацию group by с использованием PK индекса.
https://github.com/ClickHouse/ClickHouse/pull/9113
>По партициям таблица разбита с учётом условий частых запросов, тут все ок
эх
источник

b

blkmrkt in ClickHouse не тормозит
Vadim Metikov
Можно,
select * from system.graphite_retentions, мы так узнали,  что сломали ретеншены
А не подскажете, вот эти дефолтные age и precision распространяются на правила с паттернами? Я в дефолтах определил лишь age+precision чтоб не повторять для каждого паттерна, боюсь что ничего теперь не роллапится что не попадает под паттерны.
источник

S

Slach in ClickHouse не тормозит
Stanislav Didenko
Привет, подскажите пожалуйста, насколько важно для производительности select запросов в первичный ключ таблицы вставлять поле по которому часто происходит группировка (кортеж из нескольких полей) ? По партициям таблица разбита с учётом условий частых запросов, тут все ок. А вот как определять order by() для будущих группировок не очень понятно.
в PK лучше вставлять то, что наибольшим образом отсекает лишние parts через условия WHERE  ;)
например время
и поля с низкой кардинальностью которые учавствуют в большинстве запросов (event_type типично)

PARTITIONS (не путать с parts) тоже не должно быть слишком МНОГО

очень грубо говоря
сначала через WHERE определяются какие PARTITIONS будут участвовать в запросе
потом сканируется каждый part в каждой партиции (паралельно), читается (с кешированием) .mrk файл в котором значения полей из PK в соответствии с index granularity   и по значениям полей из PK которые учавствуют в запросе определяется надо ли делать полное сканирование для этого part или нет
и уже потом идет распаковка поточная .bin файлов с данными и их сканирование
источник

S

Slach in ClickHouse не тормозит
Stanislav Didenko
Привет, подскажите пожалуйста, насколько важно для производительности select запросов в первичный ключ таблицы вставлять поле по которому часто происходит группировка (кортеж из нескольких полей) ? По партициям таблица разбита с учётом условий частых запросов, тут все ок. А вот как определять order by() для будущих группировок не очень понятно.
производительность GROUP BY
зависит больше от того насколько много уникальных комбинаций значений полей из GROUP BY у вас на выходе получается
потому что аггрегатная функция по сути своей формирует хеш таблицу ключ у которой это уникальная комбинация из GROUP BY ... а значения это структура из необходимых полей которые нужны для конкретной аггрегатной функции
источник

S

Slach in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
ну вот совсем недавно запили оптимизацию group by с использованием PK индекса.
https://github.com/ClickHouse/ClickHouse/pull/9113
>По партициям таблица разбита с учётом условий частых запросов, тут все ок
эх
странная какая то оптимизация на первый взгляд
источник

SD

Stanislav Didenko in ClickHouse не тормозит
Slach
в PK лучше вставлять то, что наибольшим образом отсекает лишние parts через условия WHERE  ;)
например время
и поля с низкой кардинальностью которые учавствуют в большинстве запросов (event_type типично)

PARTITIONS (не путать с parts) тоже не должно быть слишком МНОГО

очень грубо говоря
сначала через WHERE определяются какие PARTITIONS будут участвовать в запросе
потом сканируется каждый part в каждой партиции (паралельно), читается (с кешированием) .mrk файл в котором значения полей из PK в соответствии с index granularity   и по значениям полей из PK которые учавствуют в запросе определяется надо ли делать полное сканирование для этого part или нет
и уже потом идет распаковка поточная .bin файлов с данными и их сканирование
Спасибо за ответ! Да про partitions и parts все так, под частые условия и проектировались, при чем с учётом того, чтобы partitions не получилось слишком много. Про group by примерно понял
источник

S

Slach in ClickHouse не тормозит
Stanislav Didenko
Привет, подскажите пожалуйста, насколько важно для производительности select запросов в первичный ключ таблицы вставлять поле по которому часто происходит группировка (кортеж из нескольких полей) ? По партициям таблица разбита с учётом условий частых запросов, тут все ок. А вот как определять order by() для будущих группировок не очень понятно.
Ну и еще GROUP BY конечно зависит от того насколько много строк у вас БЕЗ GROUP BY
то есть запрос в котором 1 миллион строк превращается в 1000 через GROUP BY
будет скорее всего быстрее чем запрос в 10 миллионов строк которые превращаются в 100
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Slach
странная какая то оптимизация на первый взгляд
да ниче ок, Elapsed: 36.085 sec VS Elapsed: 0.078 sec.

create table GT( A Int64, B Float64) Engine=MergeTree order by A;

insert into GT select number%55555555, 0 from numbers (1000000000);

set max_threads=1;
select sum(B), A from GT group by A limit 3;

3 rows in set. Elapsed: 36.085 sec. Processed 1.00 billion rows

set optimize_aggregation_in_order=1;

select sum(B), A from GT group by A limit 3;
3 rows in set. Elapsed: 0.078 sec. Processed 4.47 million rows
источник

VM

Vadim Metikov in ClickHouse не тормозит
blkmrkt
А не подскажете, вот эти дефолтные age и precision распространяются на правила с паттернами? Я в дефолтах определил лишь age+precision чтоб не повторять для каждого паттерна, боюсь что ничего теперь не роллапится что не попадает под паттерны.
Никак, это дефолт,  то есть то,  что не подходит под паттерны,  в паттернах задайте свои age,  precision
источник

VM

Vadim Metikov in ClickHouse не тормозит
Мы,  например до 48 часов ничего не делаем (не прореживаем),  а после прореживаем до 1 точки в минуту,  затем,  после 90 дней -  до 1 точки в 10 минут и партиции недельнык падают с 300гб до 30
источник

KL

Katherine L in ClickHouse не тормозит
привет! у меня вопрос про STOP MERGES
1) реплицируемый ли это запрос, или надо на всех хостах выполнять?
2) можно ли как-то проверить, что для таблицы мержи включены/выключены? или только очередь system.merges?
задача - отключить мерж временных таблиц, чтоб не тратить зря ресурс
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Katherine L
привет! у меня вопрос про STOP MERGES
1) реплицируемый ли это запрос, или надо на всех хостах выполнять?
2) можно ли как-то проверить, что для таблицы мержи включены/выключены? или только очередь system.merges?
задача - отключить мерж временных таблиц, чтоб не тратить зря ресурс
1 на всех
2 никак

>задача - отключить мерж временных таблиц, чтоб не тратить зря ресурс
все это звучит исключительно дико со всех точек зрения, примерно как попытка выстрелить в оба колена сразу
эээ каких временных ? движок?   MergeTree ? ну так вставляйте чтобы был сразу один парт и никаких мержей не будет.
источник