Spec-Zone.ru › MariaDB

УБИТЬ [СОЕДИНЕНИЕ | ЗАПРОС]

Синтаксис

KILL [HARD | SOFT] { {CONNECTION|QUERY} thread_id | QUERY ID query_id | USER user_name }

Описание

Каждое соединение с mysqld выполняется в отдельном потоке. Вы можете увидеть работающие потоки с помощью оператора SHOW PROCESSLIST и убить поток с помощью оператора KILL thread_id. Оператор KILL позволяет использовать необязательный модификатор CONNECTION или QUERY:

  • KILL CONNECTION эквивалентен KILL без модификатора: он завершает соединение, связанное с данным идентификатором потока или запроса.
  • KILL QUERY завершает оператор, который в данный момент выполняет поток connection_id, но сохраняет само соединение.
  • KILL QUERY ID завершает запрос по идентификатору query_id, сохраняя соединение.

Если соединение завершается с активной транзакцией, транзакция будет откачена. Если убивается только запрос, текущая транзакция останется активной. См. также idle_transaction_timeout.

Если у вас есть привилегия PROCESS, вы можете увидеть все потоки. Если у вас есть привилегия SUPER или, начиная с MariaDB 10.5.2, привилегия CONNECTION ADMIN, вы можете убить все потоки и запросы. В противном случае вы можете увидеть и убить только свои собственные потоки и запросы.

Убийство запросов, которые ремонтируют или создают индексы для таблиц MyISAM и Aria, может привести к повреждению таблиц. Используйте опцию SOFT для предотвращения этого!

Опция HARD (по умолчанию) убивает команду как можно скорее. Если вы используете SOFT, критические операции, которые могут оставить таблицу в несогласованном состоянии, не будут прерваны. Такие операции включают REPAIR и INDEX создание для таблиц MyISAM и Aria (REPAIR TABLE, OPTIMIZE TABLE).

KILL ... USER username убьёт все соединения/запросы для данного пользователя. USER может быть указан одним из следующих способов:

  • имя пользователя (убить без учёта имени хоста)
  • имя_пользователя@имя_хоста
  • CURRENT_USER или CURRENT_USER()

Если вы указываете идентификатор потока, а такого потока не существует, будет выдано следующее сообщение об ошибке:

ERROR 1094 (HY000): Unknown thread id: <thread_id>

Если вы указываете идентификатор запроса, который не существует, будет выдано следующее сообщение об ошибке:

ERROR 1957 (HY000): Unknown query id: <query_id>

Однако, если вы указываете имя пользователя, сообщение об ошибке не выдаётся для неподключенных (или даже несуществующих) пользователей. Для проверки того, было ли соединение/запрос убито, можно использовать функцию ROW_COUNT().

Клиент, чьё соединение было убито, получит следующую ошибку:

ERROR 1317 (70100): Query execution was interrupted

Для получения списка существующих сессий используйте оператор SHOW PROCESSLIST или запросите таблицу Information Schema PROCESSLIST.

Примечание: Вы не можете использовать KILL с библиотекой встраиваемого сервера MariaDB, так как встроенный сервер просто выполняется внутри потоков приложения-хоста. Он не создаёт собственных потоков соединений.

Примечание: Вы также можете использовать mariadb-admin kill thread_id [,thread_id...] для убийства соединений. Для получения списка выполняемых запросов используйте mariadb-admin processlist. См. mariadb-admin.

Percona Toolkit содержит программу pt-kill, которую можно использовать для автоматического убийства соединений, соответствующих определённым критериям. Например, она может использоваться для завершения неактивных соединений или соединений, которые были активны более 60 секунд.

См. также

  • Пределы и таймауты запросов
  • Прерывание операторов, превышающих определённое время выполнения
  • idle_transaction_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/kill/

Spec-Zone.ru

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