giết tất cả các truy vấn - MySQL


17

Đôi khi trong SNAFU tôi phải chạy kill query xxxxxxxhai mươi hoặc ba mươi lần. Bất kỳ loại kill alllệnh tôi đang thiếu?

Trên tài khoản của cách tôi không thích gõ.


khởi động lại máy chủ?
Derek Downey

@DTest - điều đó có thể được thực hiện với một truy vấn không? Tôi không có quyền truy cập máy chủ trực tiếp.
JIS tone

Đây là một câu hỏi có thể có ích cho các nhà phát triển và DBA khác (+1) !!!
RolandoMySQLDBA

Câu trả lời:


15

Từ dòng lệnh 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

Bạn có thể thay đổi tùy chọn grep trong tiêu đề của vòng lặp for để định vị một người dùng cụ thể hoặc chuỗi cụ thể trong truy vấn.

Nếu bạn có MySQL 5.1 trong đó danh sách quy trình nằm trong Information_SCHema, bạn có thể thực hiện việc này để tạo các lệnh KILL QUERY hàng loạt từ bên trong máy khách mysql:

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

Bạn có thể thực hiện các mệnh đề WHERE đối với trường INFO để tìm kiếm một truy vấn cụ thể, trường TIME đối với các truy vấn chạy dài hoặc trường DB đối với cơ sở dữ liệu cụ thể.


5
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/


Tôi thực sự thích cách tiếp cận này bởi vì nó có thể được thực hiện trong giới hạn của máy khách mysql bất kể Linux hay Windows. +1 !!!
RolandoMySQLDBA
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.