MySQL ไม่มีคำสั่ง Kill แบบหลาย Process พร้อมกัน (Mass Kill) จึงต้อง Kill ทีละ Process โดยใช้คำสั่ง KILL มาดูวิธีการกัน
ตรวจสอบ Process ที่ทำงานอยู่
mysql> SHOW PROCESSLIST;
ผลลัพธ์ตัวอย่าง:
+----+-----------------+-----------------+------+---------+------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------------+------+---------+------+------------------------+------------------+ | 4 | event_scheduler | localhost | NULL | Daemon | 7986 | Waiting on empty queue | NULL | | 8 | root | localhost:65180 | test | Query | 0 | starting | show processlist | +----+-----------------+-----------------+------+---------+------+------------------------+------------------+ 2 rows in set (0.00 sec)
Kill Process ที่รันนานเกิน 10 วินาที
ใช้คำสั่งนี้เพื่อสร้างคำสั่ง Kill อัตโนมัติ:
mysql> SELECT CONCAT('KILL ', id, ';')
-> FROM information_schema.processlist
-> WHERE TIME > 10;
ผลลัพธ์:
+-----------------------+
| CONCAT('KILL ', id, ';') |
+-----------------------+
| KILL 4; |
+-----------------------+
1 row in set (0.00 sec)
จากนั้นนำคำสั่ง KILL 4; ไปรันจริง
วิธีทางเลือก: Kill ทั้งหมดด้วยคำสั่งเดียว (Linux/Unix)
mysql -e "SHOW FULL PROCESSLIST;" -ss | awk '{print "KILL "$1";"}' | mysql
คำเตือน: วิธีนี้จะ Kill ทุก Process รวมถึง system process ด้วย ควรใช้ด้วยความระมัดระวัง และควรกรองเฉพาะ Process ที่ต้องการจริงๆ