Квоты
Квоты поддерживаются в ClickHouse Cloud, но должны создаваться с использованием DDL-синтаксиса. Подход с конфигурацией XML, описанный ниже, не поддерживается.
Квоты позволяют ограничивать использование ресурсов в течение определенного периода времени или отслеживать использование ресурсов. Квоты настраиваются в конфигурации пользователя, которая обычно является 'users.xml'.
В системе также есть функция для ограничения сложности одного запроса. См. раздел Ограничения на сложность запросов.
В отличие от ограничений сложности запросов, квоты:
- Накладывают ограничения на набор запросов, которые могут быть выполнены в течение определенного времени, вместо ограничения одного запроса.
- Учитывают ресурсы, затраченные на всех удалённых серверах для распределенной обработки запросов.
Давайте посмотрим на часть файла 'users.xml', которая определяет квоты.
По умолчанию квота отслеживает потребление ресурсов каждый час, не ограничивая использование. Потребление ресурсов, рассчитанное для каждого интервала, выводится в журнал сервера после каждого запроса.
Для квоты 'statbox' ограничения устанавливаются для каждого часа и для каждых 24 часов (86 400 секунд). Временной интервал считается, начиная с фиксированного момента времени, заданного реализацией. Другими словами, 24-часовой интервал не обязательно начинается в полночь.
Когда интервал заканчивается, все собранные значения очищаются. Для следующего часа расчёт квоты начинается заново.
Вот суммы, которые могут быть ограничены:
queries
– Общее количество запросов.
query_selects
– Общее количество запросов select.
query_inserts
– Общее количество запросов insert.
errors
– Количество запросов, которые вызвали исключение.
result_rows
– Общее количество строк, выданных в результате.
result_bytes
- Общий размер строк, выданных в результате.
read_rows
– Общее количество исходных строк, прочитанных из таблиц для выполнения запроса на всех удалённых серверах.
read_bytes
- Общий размер, прочитанный из таблиц для выполнения запроса на всех удалённых серверах.
written_bytes
- Общий размер операции записи.
execution_time
– Общее время выполнения запроса в секундах (реальное время).
failed_sequential_authentications
- Общее количество последовательных ошибок аутентификации.
Если лимит превышен хотя бы для одного временного интервала, выбрасывается исключение с текстом о том, какое ограничение было превышено, для какого интервала и когда начинается новый интервал (когда запросы могут быть отправлены снова).
Квоты могут использовать функцию "quota key" для отчета о ресурсах для нескольких ключей независимо. Вот пример этого:
Квота назначается пользователям в разделе 'users' конфигурации. См. раздел "Права доступа".
Для распределенной обработки запросов накопленные суммы хранятся на сервере запросов. Таким образом, если пользователь переходит на другой сервер, квота там "начинается заново".
Когда сервер перезагружается, квоты сбрасываются.