it-swarm.asia

bunuh semua kueri - MySQL

Kadang-kadang selama SNAFU saya harus menjalankan kill query xxxxxxx dua puluh atau tiga puluh kali. Semacam kill all perintah saya hilang?

Karena saya tidak suka mengetik.

17
JIStone

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 bisa 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.

15
RolandoMySQLDBA
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/

5
philfreo