делать запросы без указания определенного поля в WHERE?
Мы храним логи, и часто люди забывают указывать WHERE timestamp > today(), например - и CH пытается выгрузить логи за весь период - а это десятки ТБ.
там где-то был лимит на количество рам для запроса/сессии/юзера
такой возможности нет, но можно попробовать следующий костыль: прикинуть, сколько исполняется "нормальный" запрос, и "ненормальный", выбрать какой-то разумный лимит по времени выполнения и установить "max_execution_time". установить "timeout_before_checking_execution_speed", отличный от 0. В таком случае, через "timeout_before_checking_execution_speed" КХ прикинет, сколько будет выполняться запрос, и если он не укладывается в "max_execution_time", то будет остановлен с type=4 и соответствующим эксепшеном
force_index_by_date force_primary_key
При force_index_by_date=1 ClickHouse проверяет, есть ли в запросе условие на ключ даты, которое может использоваться для отсечения диапазонов данных. Если подходящего условия нет - кидается исключение. волшебно. похоже, я не дочитал доку. Спасибо :)
Это конечно не про даты. А про партиции
Огонь. Спасибо. А есть вообще какие то best practices по схеме таблиц с логами? Таблицы создавались еще давно, и мы уже давно уперлись в 96 ядерные тачки. Сейчас думаю шардить данные и ищу все возможные способы оптимизировать систему.
Обсуждают сегодня