Квоты в ClickHouse CloudКвоты поддерживаются в ClickHouse Cloud, но их нужно создавать с помощью синтаксиса DDL. Описанный ниже подход с XML-конфигурацией не поддерживается.
- Ограничивают набор запросов, которые можно выполнять в течение заданного периода времени, вместо того чтобы ограничивать отдельный запрос.
- Учитывают ресурсы, затраченные на всех удалённых серверах при распределённой обработке запросов.
queries – Общее количество запросов.
query_selects – Общее количество запросов SELECT.
query_inserts – Общее количество запросов на вставку.
errors – Количество запросов, вызвавших исключение.
result_rows – Общее количество строк, возвращённых в результате.
result_bytes - Общий размер строк, возвращённых в результате.
read_rows – Общее количество исходных строк, прочитанных из таблиц для выполнения запроса на всех удалённых серверах.
read_bytes - Общий объём данных, прочитанных из таблиц для выполнения запроса на всех удалённых серверах.
written_bytes - Общий объём записанных данных.
execution_time – Общее время выполнения запроса в секундах (реальное время).
failed_sequential_authentications - Общее количество последовательных ошибок аутентификации.
queries_per_normalized_hash – Максимальное число выполнений любого нормализованного запроса. Нормализованные запросы — это запросы, в которых литералы заменены плейсхолдерами, поэтому SELECT 1 и SELECT 2 считаются одним и тем же нормализованным запросом. Этот лимит отслеживается независимо для каждого отдельного нормализованного шаблона запроса.
Если лимит превышен хотя бы в одном временном интервале, генерируется исключение с сообщением о том, какое ограничение было превышено, для какого интервала и когда начинается новый интервал (то есть когда запросы снова можно будет отправлять).
Квоты могут использовать возможность “quota key”, чтобы независимо учитывать ресурсы для нескольких ключей. Вот пример:
<keyed_by_normalized_query_hash />:
SELECT number FROM numbers(1) и SELECT number FROM numbers(2) используют один и тот же бакет (поскольку у них одинаковая нормализованная форма), а SELECT number, number FROM numbers(1) использует отдельный бакет.
Квота назначается пользователям в разделе ‘users’ конфигурации. См. раздел “Права доступа”.
При распределённой обработке запросов накопленные значения хранятся на сервере, отправившем запрос. Поэтому, если пользователь переключится на другой сервер, квота там “начнёт отсчёт заново”.
При перезапуске сервера квоты сбрасываются.