Квоты
Квоты позволяют ограничить использование ресурсов за определенный период времени или отслеживать использование ресурсов. Квоты настраиваются в конфигурации пользователя, которая обычно называется 'users.xml'.
Система также имеет функцию ограничения сложности одного запроса. См. раздел Ограничения по сложности запроса.
В отличие от ограничений по сложности запроса, квоты:
- Налагают ограничения на набор запросов, которые могут выполняться за определенный период времени, вместо ограничения одного запроса.
- Учитывают ресурсы, потраченные на всех удаленных серверах для обработки распределенных запросов.
Давайте рассмотрим раздел файла 'users.xml', который определяет квоты.
По умолчанию квота отслеживает потребление ресурсов каждый час, не ограничивая использование. Потребление ресурсов, рассчитанное для каждого интервала, выводится в журнал сервера после каждого запроса.
Для квоты 'statbox' ограничения установлены на каждый час и каждые 24 часа (86,400 секунд). Временной интервал считается, начиная с определенного фиксированного момента времени, установленного в реализации. Иными словами, 24-часовой интервал не обязательно начинается с полуночи.
Когда интервал заканчивается, все собранные значения очищаются. На следующий час расчет квоты начинается заново.
Вот параметры, которые могут быть ограничены:
queries
– Общее количество запросов.
query_selects
– Общее количество запросов SELECT.
query_inserts
– Общее количество запросов INSERT.
errors
– Количество запросов, вызвавших исключение.
result_rows
– Общее количество строк, возвращенных в результате.
read_rows
– Общее количество строк источника, прочитанных из таблиц для выполнения запроса на всех удаленных серверах.
execution_time
– Общее время выполнения запроса, в секундах (реальное время).
Если лимит превышен хотя бы для одного временного интервала, выбрасывается исключение с текстом о том, какое ограничение было превышено, для какого интервала и когда начинается новый интервал (когда запросы можно снова отправлять).
Квоты могут использовать функцию «ключа квоты», чтобы сообщать о ресурсах для нескольких ключей независимо. Вот пример этого:
Квота назначается пользователям в разделе 'users' конфигурации. См. раздел "Права доступа".
Для распределенной обработки запросов накопленные суммы хранятся на сервере, откуда были отправлены запросы. Таким образом, если пользователь перейдет на другой сервер, квота там «начнется заново».
При перезапуске сервера квоты сбрасываются.