bunuh semua kueri - MySQL


17

Kadang-kadang selama SNAFU saya harus berlari kill query xxxxxxxdua puluh atau tiga puluh kali. Apa saja jenis kill allperintah yang saya lewatkan?

Karena saya tidak suka mengetik.


restart server?
Derek Downey

@Dest - dapatkah itu dilakukan dengan kueri? Saya tidak punya akses server langsung.
JIStone

Ini adalah pertanyaan yang sangat berguna bagi pengembang lain dan DBA (+1) !!!
RolandoMySQLDBA

Jawaban:


15

Dari baris perintah Linux

for PROC_TO_KILL in `mysql -h... -u... -p... -A --skip-column-names -e"SHOW PROCESSLIST" | grep -v "system user" | awk '{print $1}'` ; do mysql -h... -u... -p... -A --skip-column-names -e"KILL QUERY ${PROC_TO_KILL}" ; done

Anda bisa mengubah opsi grep di header loop for untuk menemukan pengguna tertentu atau string tertentu dalam kueri.

Jika Anda memiliki MySQL 5.1 di mana daftar proses ada di INFORMATION_SCHEMA, Anda dapat melakukan ini untuk menghasilkan perintah KILL QUERY dalam jumlah besar dari dalam klien mysql:

SELECT GROUP_CONCAT(CONCAT('KILL QUERY ',id,';') SEPARATOR ' ') KillQuery
FROM information_schema.processlist WHERE user<>'system user'\G

Anda bisa melakukan klausa WHERE terhadap bidang INFO untuk mencari kueri tertentu, bidang TIME terhadap kueri yang sudah berjalan lama, atau bidang DB terhadap database tertentu.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.