Size: a a a

ClickHouse не тормозит

2020 June 24

D

Dj in ClickHouse не тормозит
Required Optional
Добрый день, коллеги! Приветствую особенно гуру, что не боты. Не могли бы вы помочь слепцу в поисках истинны среди всяческого индексированного добра.
Что есть: огромная реплицированная таблица с 10 млрд линий и около 100 колонок. Есть партицирование ее по дате и одному инту(назовем его комит_ид), сортировка по двум стрингам и еще одному инту. Первичный ключ не указан. Сделанно специально, чтобы оптимизировать некоторые запросы типа SELECT. Теперь появились новые запросы в соторые еще добавились сравнение на равенство по колонки типа ЮИнт64 (который некий хэш) и один Инт8 у которого 2 значения : +1 или -1. По ключу сортировки и партиции тоже сравнение на равенство.
Проблема: впечатление, что КХ сканирует все, так как запрос производится в течение 20 с. Попытался добавить минмакс индекс и блум-филтер. Переоптимизировал таблицу. Время не улучшилось, а иногда в некоторых вариантах ухудшилось.
Вопрос: у кого естль луч света в царстве индексирования данных и оптимизации? Заранее благодарен
еще есть вариант сделать партишны по (дата, бакет-хешей),
т.е. бьёте на 20 бакетов каждую партицию по префиксу хеша, и запросы делают меньшие фулсканы
источник

DT

Dmitry Titov in ClickHouse не тормозит
Required Optional
Добрый день, коллеги! Приветствую особенно гуру, что не боты. Не могли бы вы помочь слепцу в поисках истинны среди всяческого индексированного добра.
Что есть: огромная реплицированная таблица с 10 млрд линий и около 100 колонок. Есть партицирование ее по дате и одному инту(назовем его комит_ид), сортировка по двум стрингам и еще одному инту. Первичный ключ не указан. Сделанно специально, чтобы оптимизировать некоторые запросы типа SELECT. Теперь появились новые запросы в соторые еще добавились сравнение на равенство по колонки типа ЮИнт64 (который некий хэш) и один Инт8 у которого 2 значения : +1 или -1. По ключу сортировки и партиции тоже сравнение на равенство.
Проблема: впечатление, что КХ сканирует все, так как запрос производится в течение 20 с. Попытался добавить минмакс индекс и блум-филтер. Переоптимизировал таблицу. Время не улучшилось, а иногда в некоторых вариантах ухудшилось.
Вопрос: у кого естль луч света в царстве индексирования данных и оптимизации? Заранее благодарен
таблица
ORDER BY str1,str2,int1
Но судя из описания были у вас запросы
WHERE str1='' and str2='' and int1 = 3

а теперь появились
WHERE str1='' and str2='' and int1 = 3 and hash = '' and int2 = 1
или
WHERE hash = '' and int2 = 1
источник

DP

Dorian Peregrim in ClickHouse не тормозит
А бывает такое, что таблица просто взяла и исчезла? 😕
источник

D

Dj in ClickHouse не тормозит
Dorian Peregrim
А бывает такое, что таблица просто взяла и исчезла? 😕
да, удалили sql файл из папки метадаты например. ну или в логи...
источник

RO

Required Optional in ClickHouse не тормозит
Dmitry Titov
единственный случай когда вам помогут скип индексы это когда у вас есть какая то локальность данных(те что учавствуют в скип индексе), с учетом ORDER BY таблицы
спасибо. Могли бы вы показать на примере? Что подразумевается под локальностью данных? частичная монотонность?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Required Optional
спасибо. Могли бы вы показать на примере? Что подразумевается под локальностью данных? частичная монотонность?
Есть у нас таблица в 10млрд записей с какой то сортировкой
есть в этой таблице колонка UInt8 которая не учавствует в ключе

И допустим только у 100 записей в этой таблице значение 1 во всех остальных 0
Тогда скип индекс set или minMax в это случае сработает
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dorian Peregrim
А бывает такое, что таблица просто взяла и исчезла? 😕
да конечно, а рядом появляется др. таблица, и в ней строка с объяснением куда переводить биткоины
источник

DP

Dorian Peregrim in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
да конечно, а рядом появляется др. таблица, и в ней строка с объяснением куда переводить биткоины
Смешно, было в песочнице с монгой )
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dorian Peregrim
Смешно, было в песочнице с монгой )
это было бы смешно если бы в этом чатике об этом не писали раза 3
источник

RO

Required Optional in ClickHouse не тормозит
Dj
я бот, но имхо нету. если ваш хеш не привязан к сортировке (локальность выше) скип индексы в мусорку.

рекомендую попробовать добавить ваш хеш в конец вашей сортировки, или перед комит-ид может помочь и проверить на саб-сете данных
спасибо попробую добавть в конец ключа сортировки хэш инт
источник

D

Dj in ClickHouse не тормозит
Required Optional
спасибо попробую добавть в конец ключа сортировки хэш инт
опять таки, зависит от кардинальности и "локальности" комбинации comit_id + hash
пока не попробуете имхо не познаете дзен (и это не реклама яндекс-дзена)
источник

RO

Required Optional in ClickHouse не тормозит
Dmitry Titov
таблица
ORDER BY str1,str2,int1
Но судя из описания были у вас запросы
WHERE str1='' and str2='' and int1 = 3

а теперь появились
WHERE str1='' and str2='' and int1 = 3 and hash = '' and int2 = 1
или
WHERE hash = '' and int2 = 1
ну hash - UInt64, так что WHERE Date='' and str1='' and str2='' and int1=3 and hash=10 and int2=1
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dmitry Titov
таблица
ORDER BY str1,str2,int1
Но судя из описания были у вас запросы
WHERE str1='' and str2='' and int1 = 3

а теперь появились
WHERE str1='' and str2='' and int1 = 3 and hash = '' and int2 = 1
или
WHERE hash = '' and int2 = 1
>>По ключу сортировки и партиции тоже сравнение на равенство.

>ORDER BY str1,str2,int1
>Но судя из описания были у вас запросы
>WHERE str1='' and str2='' and int1 = 3

>а теперь появились
>WHERE str1='' and str2='' and int1 = 3 and hash = '' and int2 = 1

так не должно ухудшится, префикс в индексе
источник

DT

Dmitry Titov in ClickHouse не тормозит
Required Optional
ну hash - UInt64, так что WHERE Date='' and str1='' and str2='' and int1=3 and hash=10 and int2=1
ну вообще я бы добавил тогда hash и int2 в ORDER BY
кстати, когда вы не указываете отдельно PK, то PK=ORDER BY

и такой вопрос у вас какая кардинальность str1,str2,int1
источник

DT

Dmitry Titov in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
>>По ключу сортировки и партиции тоже сравнение на равенство.

>ORDER BY str1,str2,int1
>Но судя из описания были у вас запросы
>WHERE str1='' and str2='' and int1 = 3

>а теперь появились
>WHERE str1='' and str2='' and int1 = 3 and hash = '' and int2 = 1

так не должно ухудшится, префикс в индексе
Да, но возможно ожидалось улучшение относительно "обычных" запросов
источник

AZ

Anton Zhuravsky in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
да вроде да, какая разница-то
кажется, разница есть: есть ключ во вложенной таблице - строка, то автомагия суммирования не работает. стоит заменить его на число – и все становится верно. Версия КХ 19.16
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
вообще непонятно насколько точные запросы нужны, и насколько быстрые, наверное можно сделать MV c инверсным индексом
источник

RO

Required Optional in ClickHouse не тормозит
Dmitry Titov
Есть у нас таблица в 10млрд записей с какой то сортировкой
есть в этой таблице колонка UInt8 которая не учавствует в ключе

И допустим только у 100 записей в этой таблице значение 1 во всех остальных 0
Тогда скип индекс set или minMax в это случае сработает
UInt8 в 10 млрд случаях 1 и в 100-10000 случаях -1.
источник

DT

Dmitry Titov in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
вообще непонятно насколько точные запросы нужны, и насколько быстрые, наверное можно сделать MV c инверсным индексом
Ну если всегда есть префикс, то инверсный индекс тут не нужен, кмк
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Anton Zhuravsky
кажется, разница есть: есть ключ во вложенной таблице - строка, то автомагия суммирования не работает. стоит заменить его на число – и все становится верно. Версия КХ 19.16
чендлог читайте, месяцев 6 назад сделали строки
источник