欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

kill mysql sleep

阮建安2年前13瀏覽0評論

MySQL的sleep進程聽起來很嚇人,實際上只是因為它可能導致MySQL服務器響應變慢而被稱為“kill mysql sleep”。當MySQL在查詢時遇到延遲時,會自動啟動一個“sleep”進程來等待,并將此進程保留在服務器中,直到延遲結束。這個進程所需的資源非常少,但如果有很多這樣的進程在服務器上運行,它們可以阻塞MySQL的其他請求并影響服務器性能。

mysql>SHOW PROCESSLIST;
+----+------------+-----------+------+---------+------+-------+------------------+
| Id | User       | Host      | db   | Command | Time | State | Info             |
+----+------------+-----------+------+---------+------+-------+------------------+
| 1  | system user|           | NULL | Connect | 4209 | Sleep | NULL             |
| 2  | system user|           | NULL | Connect | 4210 | Sleep | NULL             |
| 3  | system user|           | NULL | Connect | 4211 | Sleep | NULL             |
| 4  | system user|           | NULL | Connect | 4212 | Sleep | NULL             |
| 5  | system user|           | NULL | Connect | 4070 | Query | SHOW PROCESSLIST |
+----+------------+-----------+------+---------+------+-------+------------------+

上述代碼顯示了一個MySQL服務器,其中有四個“sleep”進程。要解決這個問題,可以使用以下代碼,將其殺死:

mysql>SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user = 'system user' AND command = 'Sleep' AND time >100;
+---------------------+
| CONCAT('KILL ',id,';') |
+---------------------+
| KILL 1;             |
| KILL 2;             |
| KILL 3;             |
| KILL 4;             |
+---------------------+
mysql>SELECT CONCAT('KILL ',id,';') INTO @killquery FROM information_schema.processlist WHERE user = 'system user' AND command = 'Sleep' AND time >100;
mysql>PREPARE kill_sleep FROM @killquery;
mysql>EXECUTE kill_sleep;

上述代碼將查詢狀態為“Sleep”且已運行超過100秒的所有進程殺死。該命令通過將查詢的ID插入到“KILL”命令中來實現,然后將其準備好,最后執行該命令以殺死該進程。

最后,要注意的是,如果MySQL客戶端連接MySQL服務器并且在執行查詢時關閉,服務器可能會保留此查詢的“Sleep”進程。這時,需要殺死這些進程以釋放服務器資源。