【DB】MySQLで実行中のクエリを確認する方法【高負荷】

MySQL

こんにちは、今回はMySQLで実行中のクエリを確認する方法を紹介します。

会社で運用中のサーバーで監視会社を利用していてサーバーになにか起きた場合に連絡が来るようになっています。

今回DBサーバーで高負荷が発生していると連絡を受けたので確認してみました。

terminalからSSHで接続してtopで確認してみると

load averageが、13

Cpu90台で稼働していました。

高負荷が発生しているサーバーはDBサーバーなのでMySQLぐらいしか考えつきませんので実行中のクエリを確認します。

実行中のプロセスを確認するコマンド

SHOW  PROCESSLIST

Fullを指定するとSQLが全文表示されます。

SHOW FULL PROCESSLIST

Id User Host db Command Time State Info Progress
6490741 root localhost:54688 **** Query 0 NULL SHOW PROCESSLIST 0.000
6491079 root localhost **** Query 2 Sending data update **** set **** = (select **** from **** where **** = 0 and o 0.000

Timeが、実行時間(秒)です。

実行時間の長いクエリが、複数ありこれが高負荷の原因となっていました。

実行時間の長いクエリを止めます。

Kill [id]

うっかり重いSQLを実行してしまって止めたいときに使えます。

参考

https://dev.mysql.com/doc/refman/5.6/ja/show-processlist.html

https://dev.mysql.com/doc/refman/5.6/ja/kill.html

コメント

タイトルとURLをコピーしました