Spec-Zone.ru › MariaDB

Пределы запросов и таймауты

В этой статье описаны различные методы, которые MariaDB предоставляет для ограничения/таймаута запроса:

LIMIT

SELECT ... LIMIT row_count
or
SELECT ... LIMIT offset, row_count
or
SELECT ... LIMIT row_count OFFSET offset

Оператор LIMIT ограничивает количество возвращаемых строк.

LIMIT ROWS EXAMINED

SELECT ... LIMIT ROWS EXAMINED rows_limit;

Останавливает запрос после того, как было просмотрено заданное количество строк.

sql_safe_updates

Если переменная sql_safe_updates установлена, то нельзя выполнить оператор UPDATE или DELETE, если не указано ограничение по ключу в WHERE оператор или предоставлен LIMIT оператор (или оба).

SET @@SQL_SAFE_UPDATES=1
UPDATE tbl_name SET not_key_column=val;
-> ERROR 1175 (HY000): You are using safe update mode 
  and you tried to update a table without a WHERE that uses a KEY column

sql_select_limit

sql_select_limit служит автоматическим LIMIT row_count для любого запроса SELECT.

SET @@SQL_SELECT_LIMIT=1000
SELECT * from big_table;

Вышесказанное эквивалентно:

SELECT * from big_table LIMIT 1000;

max_join_size

Если переменная max_join_size (также называемая sql_max_join_size) установлена, она ограничивает любые запросы SELECT, которые, вероятно, потребуют проверки более чем MAX_JOIN_SIZE строк.

SET @@MAX_JOIN_SIZE=1000;
SELECT count(null_column) from big_table;
->ERROR 1104 (42000): The SELECT would examine more than MAX_JOIN_SIZE rows; 
  check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay

max_statement_time

Если переменная max_statement_time установлена, любой запрос (исключая хранимые процедуры), выполнение которого занимает более max_statement_time (указано в секундах), будет прерван. Это можно установить глобально, по сессии, а также по пользователю и по запросу. См. Прерывание операторов, выполнение которых занимает больше определенного времени.

См. также

  • WAIT и NOWAIT
  • Прерывание операторов, выполнение которых занимает больше определенного времени
  • переменная lock_wait_timeout
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают мнения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/query-limits-and-timeouts/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API