184 похожих чатов

Всем привет, вопрос по использованию ClickHouse query cache. Столкнулся со

следующим поведением: при запросе к distributed таблице с параметром use_query_cache=1, помимо основного запроса на ноде инициаторе, в кеш на каждом шарде таблицы попадают все внутренние запросы к таблице лежащей под distributed. Запросы к шардам выполняются под отдельным юзером interserver. Как сделать так, чтобы кеш использовался только для основного запроса на ноде инициаторе? Из мыслей только попробовать завести отдельный профайл для intersever и там отключить enable_writes_to_query_cache, enable_reads_from_query_cache. Кто-то сталкивался или имеет хорошее решение? Прошу поделиться.

9 ответов

35 просмотров
Alexander- Автор вопроса

Поптытки назначить профиль или settings с отключенным кешем запросов для interserver провалились. Прошу мудрого совета 🤔

Alexander
Поптытки назначить профиль или settings с отключен...

как сделать так чтобы use_query_cache не передался дальше по цепочке, IMHO сложно SELECT * FROM (SELECT * FROM distributed_table WHERE ... SETTINGS use_query_cache=0) SETTINGS use_query_cache=1 не думаю что такое прокатит кроме того памяти будет жрать больше

Alexander- Автор вопроса
Slach [altinity]
как сделать так чтобы use_query_cache не передался...

Я вот думаю, должно ли оно вообще работать так, как работает by design. Советуете ли вы завести issue?

Alexander
Я вот думаю, должно ли оно вообще работать так, ка...

да логично это две независимые части, настройки и engine=Distributed исполнение запроса use_query_cache это просто настройка поведения которая в distributed запросах передается на все остальные ноды, чтобы добиться одинакового поведения соответсвенно кеш включается везде вы же хотите ускорения вот вам ускорение, распределенный кеш какая гарантия того что в следующий раз distributed запрос не будет исполнен на другой ноде кластера? и он уже будет ускорен, потому что локальные данные для него из локальных таблиц в кеше... но вообще не очень понятно, зачем вам вообще query cache? вы понимаете как этот кеш инвалидируется? вы меряете miss / hit соотношение?

Alexander- Автор вопроса
Slach [altinity]
да логично это две независимые части, настройки и...

Имею кластер с неизменяемыми данными, сделал чтобы запросы попадли на нужные шарды, чтобы был хороший cache hits. С этим всё ок. Но вот этот cache amplification который под капотом образовался, мне совсем не нужен. Для запросов LIMIT 50 OFFSET 100000 нода инициатор закеширует 50 строк, а все шарды под капотом 100050, мне кажется так не должно быть 🫤

Alexander
Имею кластер с неизменяемыми данными, сделал чтобы...

SELECT * FROM (SELECT * FROM distributed_table WHERE ... SETTINGS use_query_cache=0) SETTINGS use_query_cache=1 вот так пробовали? сам по себе кеш не знает в каком контексте он исполняется...

Alexander- Автор вопроса
Slach [altinity]
SELECT * FROM (SELECT * FROM distributed_table WHE...

Да, так не прокидывается сеттинг, спасибо, но красота решения, конечно, смущает сильно.

Alexander
Да, так не прокидывается сеттинг, спасибо, но крас...

вы сказали что вам надо 50 записей закешировать, так оно закеширует 50 записей... как вы и хотели и получаете то поведение которое хотели

Alexander- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта