Квоты
Квоты поддерживаются в 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 – Общее время выполнения запроса в секундах (реальное "настенное" время, wall time).
failed_sequential_authentications - Общее количество последовательных ошибок аутентификации.
Если лимит превышен хотя бы для одного временного интервала, генерируется исключение с текстом о том, какое ограничение было превышено, для какого интервала и когда начинается новый интервал (когда запросы можно отправлять снова).
Квоты могут использовать механизм «quota key» для раздельного учета использования ресурсов по нескольким ключам. Вот пример этого:
Квота назначается пользователям в разделе конфигурации 'users'. См. раздел "Права доступа".
При распределённой обработке запросов накопленные значения хранятся на сервере, с которого был отправлен запрос. Поэтому, если пользователь перейдёт на другой сервер, квота там будет "начинаться заново".
При перезапуске сервера квоты сбрасываются.
Связанные материалы
- Статья в блоге: Создание одностраничных веб-приложений с ClickHouse