Kadang-kadang selama SNAFU saya harus berlari kill query xxxxxxx
dua puluh atau tiga puluh kali. Apa saja jenis kill all
perintah yang saya lewatkan?
Karena saya tidak suka mengetik.
Kadang-kadang selama SNAFU saya harus berlari kill query xxxxxxx
dua puluh atau tiga puluh kali. Apa saja jenis kill all
perintah yang saya lewatkan?
Karena saya tidak suka mengetik.
Jawaban:
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.
mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
Query OK, 2 rows affected (0.00 sec)
mysql> source /tmp/a.txt;
Query OK, 0 rows affected (0.00 sec)
http://www.mysqlperformanceblog.com/2009/05/21/mass-killing-of-mysql-connections/