при нехватке памяти(DB::Exception: Memory limit (total) exceeded) падали запросы с меньшими приоритетами, а запрос с бОльшим продолжал работать?
Как я знаю, нет. Все запросы выполняются паралельно
понятно, что параллельно. Но вот нет ли возможности завалить менее приоритетный запрос в угоду большему. Т.е. чтобы бОльший не завалился
мне кажется, идея очень интересная, вы бы issue завели - многие бы под такое подписались
я пока не уверен, что она хотя бы реализуема) Знатаков бы послушать)
Вроде бы разграничение ресурсов - имеет довольно высокий приоритет на следующий год Кажется, что сейчас этого нет
мне кажется, я представляю как её можно реализовать: при запросе памяти аллокатор притормаживает если сейчас памяти нет и выставляет флажок гашения менее приоритетных запросов. продолжает когда появляется необходимая память. или когда все запросы с меньшим приоритетом оказались загашены
https://github.com/ClickHouse/ClickHouse/issues/17623#issuecomment-737099368
там говорится об общем направлении, а не этой конкретно идее
Это ответ на вот это сообщение. Мне показалось похожим
приоритеты по ядрам - это совершенно другое по реализации. тут скорее можно сделать шедулер с приоритетами память же можно выделять всем пока не окажется что она кончилась. кстати, необязательно килять запрос. выгодней может быть приостановить его и сжать/отсвопить текущие данные
попробую описать понятный issue)
https://github.com/ClickHouse/ClickHouse/issues/8449
Proper sharing of non-elastic resources requires implementation of resource overcommit + preemption. Query preemption will be implemented only after "Processors" branch and it's currently out of schedule. возможно, здесь Алексей имел в виду то что говорил я (сжать / сбросить диск данные низкоприоритетного запроса), но уж точно не то что предложили вы
вот это ближе к вашей теме: https://github.com/ClickHouse/ClickHouse/issues/28375
кажется, эти механизмы нужны для реализации того, что предложил я
Обсуждают сегодня