1. ホーム
  2. mysql

[解決済み] MySQLのSHOW PROCESSLISTコマンド:sleep

2023-03-09 10:27:28

質問

MySQLデータベースでSHOW PROCESSLISTを実行すると、次のような出力が得られます。

mysql> show full processlist;

+--------+------+-----------+--------+---------+-------+-------+-----------------------+
| Id     | User | Host      | db     | Command | Time  | State | Info                  |
+--------+------+-----------+-------+---------+-------+-------+-----------------------+
| 411665 | root | localhost | somedb | Sleep   | 11388 |       | NULL                  | 
| 412109 | root | localhost | somedb | Query   |     0 | NULL  | show full processlist | 
+--------+------+-----------+-------+---------+-------+-------+------------------------+

Commandの下にある、"Sleep"という処理を知りたいのですが。これは何を意味するのでしょうか?なぜ、長い間実行され、NULL を表示しているのですか? それは、データベースを遅くしており、私がプロセスを殺すと、それは正常に動作します。どうか私を助けてください。

どのように解決するのですか?

接続待ちのクエリではなく、接続ポインタがタイムアウト終了を待っているのです。

パフォーマンスに影響を与えません。使用しているのは、すべての接続がそうであるように、数バイトだけです。

本当に最悪のケースです。コンソール クライアントから何度も接続し、接続を閉じずにクライアントを閉じると、すべての接続を使い果たし、再び接続できるようになるまでにタイムアウトを待たなければならないかもしれません...ただし、これは非常にまれです :-)

参照 MySql Proccesslist が "Sleep" エントリでいっぱいになり、 "Too many Connections" につながるか? および https://dba.stackexchange.com/questions/1558/how-long-is-too-long-for-mysql-connections-to-sleep をご覧ください。