Size: a a a

ClickHouse не тормозит

2020 July 25

WA

WAS AV in ClickHouse не тормозит
Dj
а колонок тоже?
11 колонок
источник

WA

WAS AV in ClickHouse не тормозит
WAS AV
Добрый день

Есть одна таблица из 200М записей с движком ReplacingMergeTree
Зависает запросе  select * from  tabname  limit 1, но если добавить любое условие, то отрабатывает.
Кто-то с таким сталкивался? Куда копать?
Может кому поможет в будущем, уменьшил кол-во партиций и проблема разрешилась.
источник

WA

WAS AV in ClickHouse не тормозит
В КХ есть ограничения или рекомендации по кол-ву партиций?
источник

AB

Artur Beglaryan in ClickHouse не тормозит
/report
источник

D

Dj in ClickHouse не тормозит
WAS AV
В КХ есть ограничения или рекомендации по кол-ву партиций?
да, должно быть мало
источник

D

Dj in ClickHouse не тормозит
Vladimir Mihailenco
Т.е. сейчас мой вопрос такой - можно как-то ускорить запрос с ORDER BY duration? чтобы работал примерно так же как и ORDER BY project_id
так же не будет, у вас project_id - первый ключ в PK
источник

D

Dj in ClickHouse не тормозит
WAS AV
В КХ есть ограничения или рекомендации по кол-ву партиций?
ну и желательно, чтобы все запросы к партиционированным таблицам отсекали по partition-key
источник

D

Dj in ClickHouse не тормозит
Vladimir Mihailenco
Еще заметил что оптимизация (MergingSortedTransform?) работает только если ORDER BY first_column_in_key . Если уже сортировать по 2ой колонке в ключе - то опять читает все данные. Так должно быть?
да, так и должно быть
источник

D

Dj in ClickHouse не тормозит
Vladimir Mihailenco
Т.е. сейчас мой вопрос такой - можно как-то ускорить запрос с ORDER BY duration? чтобы работал примерно так же как и ORDER BY project_id
у вас фильтрация по project_id особо ничего и не фильтрует... миллион против двух...
попробуйте без оптимизации в prewhere добавить в гист

set optimize_move_to_prewhere=0

SELECT data FROM uptrace_prod.spans_dist AS s PREWHERE (s.project_id = 2) ORDER BY "duration" desc NULLS LAST LIMIT 10


просто посмотреть на скорость.

+ судя по всему у вас очень широкие строки...
источник

D

Dj in ClickHouse не тормозит
Vladimir Mihailenco
Т.е. сейчас мой вопрос такой - можно как-то ускорить запрос с ORDER BY duration? чтобы работал примерно так же как и ORDER BY project_id
select data from uptrace_prod.spans_dist as s where (project_id, type, time) IN
(select project_id, type, time from uptrace_prod.spans_dist where project_id=2 order by duration desc NULLS LAST LIMIT 10)
LIMIT 10;

попробуйте так, должно помочь (если я правильно понял как оно устроено у вас в данных)
источник

VM

Vladimir Mihailenco in ClickHouse не тормозит
я уже что-то подобное делаю - https://github.com/ClickHouse/ClickHouse/issues/12757
источник

VM

Vladimir Mihailenco in ClickHouse не тормозит
только вручную 2 запроса пишу
источник

VM

Vladimir Mihailenco in ClickHouse не тормозит
в самом деле помогает - раз в 10 быстрее
источник

VM

Vladimir Mihailenco in ClickHouse не тормозит
во 2ом посте пример запроса
источник

VM

Vladimir Mihailenco in ClickHouse не тормозит
ваш вариант в WHERE IN кстати работает - мой нет
спасибо
источник

Y

Yuran in ClickHouse не тормозит
WAS AV
В КХ есть ограничения или рекомендации по кол-ву партиций?
Партиционирование в идеале должно быть таким, чтобы и при вставке и при выборке количество затронутых партиций было невелико (в идеале 1, но 2-5 тоже жить можно, если у Вас не SSD). Но общее количество партиций в целом может быть любым: например, если Вы хотите хранить логи (да, я как всегда думаю про этот сценарий в первую очередь) за много лет с партиционированием по дням и почти всегда выбирать логи за последние несколько дней, то ничего страшного, что у Вас на диске будут лежать тысячи партиций. В целом, в документации где-то отражено, что партиционирование нужно не для скорости вставки или выборки (обычно партиционирование в ClickHouse замедляет эти операции), а для удобства администрирования и переноса или удаления данных.
источник

D

Dj in ClickHouse не тормозит
Yuran
Партиционирование в идеале должно быть таким, чтобы и при вставке и при выборке количество затронутых партиций было невелико (в идеале 1, но 2-5 тоже жить можно, если у Вас не SSD). Но общее количество партиций в целом может быть любым: например, если Вы хотите хранить логи (да, я как всегда думаю про этот сценарий в первую очередь) за много лет с партиционированием по дням и почти всегда выбирать логи за последние несколько дней, то ничего страшного, что у Вас на диске будут лежать тысячи партиций. В целом, в документации где-то отражено, что партиционирование нужно не для скорости вставки или выборки (обычно партиционирование в ClickHouse замедляет эти операции), а для удобства администрирования и переноса или удаления данных.
Достаточно страшно будет при рестарте... Ждем минуты две )
источник

Y

Yuran in ClickHouse не тормозит
Dj
Достаточно страшно будет при рестарте... Ждем минуты две )
Не так страшен рестарт ClickHouse, как рестарт всего сервера :) (особенно неплановый)
источник

D

Dj in ClickHouse не тормозит
Vladimir Mihailenco
ваш вариант в WHERE IN кстати работает - мой нет
спасибо
Это рекомендованный вариант подобной оптимизации в КХ. Непонятно, что вы ожидаете в своем тикете - чтобы он магически трансформировал запрос? Кх не сможет сам догадаться плюс гарантий нет
источник

D

Dj in ClickHouse не тормозит
Yuran
Не так страшен рестарт ClickHouse, как рестарт всего сервера :) (особенно неплановый)
Не так страшен рестарт сервера как рестарт кластера
источник