Sintaxe de KILL
Cada conexão ao mysqld executa em uma thread separada. Você pode ver quais threas estão em execução com o comando SHOW PROCESSLIST e matar uma thread com o comando KILL thread_id.
Se você tiver o privilégio PROCESS, você pode ver todas as threads. Se você tiver o privilégio SUPER, você pode matar todas as threads. Caso contrário, você pode ver e matar somente suas próprias threads.
Você também pode usar os comandos mysqladmin processlist e mysqladmin kill para examinar e matar threads.
Nota: Atualmente você não pode utilizar KILL com a biblioteca do servidor MariaDB embutido, porque o servidor embutido apenas roda dentro das threads da aplicação, ela não cria threads de conexões por si própria.
Quando você utiliza um KILL, um sinal (flag) kill especifico é configurado para a thread.
Na maioria dos casos pode levar algum tempo para a thread morrer pois o sinal kill só é checado em intervalos específicos.
- Nos loops
SELECT,ORDER BYeGROUP BY, o sinal é checado depois de ler um bloco de registros. Se o sinal kill está habilitado a instrução é abortada. - Na execução de um
ALTER TABLEo sinal kill é conferido antes de cada bloco de registros ser lido da tabela original. Se o sinal kill foi habilitado, o comando é abortado e a tabela temporária apagada. - Ao fazer um
UPDATE TABLEandDELETE TABLE, o sinal de kill é conferido depois de que cada bloco é lido e depois de cada atualização ou remoção de registro. Se o sinal kill está habilitado, a instrução é abortada. Note que se você não estiver utilizando transações, as alterações não irão ser desfeitas! GET_LOCK()irá aborar comNULL.- Uma thread
INSERT DELAYEDirá rapidamente descarregar todos registros que estiverem em memória e morrer. - Se a thread estiver no manipulador de bloqueio de tabelas (status:
Locked), o bloqueio de tabela será abortado rapidamente. - Se a thread estiver esperando por espaço livre em disco numa chamada
write, a escrita é abortada com uma mensagem de espaço em disco insuficiente.