【MySQL】processlistでwhereを使う

  • 2
    Like
  • 0
    Comment

プロセスを確認する方法は2つある

次の2つどっちでも:ok:

select * from information_schema.PROCESSLIST;
SHOW [FULL] PROCESSLIST;

→[FULL]を入れなくてもOKだけど、どんなSQLが実行されているかを示すInfoが先頭100文字までしか表示されないです。

select * from information_schema.PROCESSLIST;

where句やorder by句などが使えて便利:exclamation:
以下、コピペしてそのまま使えるselect文です↓

実行時間の長い順でソートする

select * from information_schema.PROCESSLIST
order by TIME desc   -- 実行時間の長い順でソート
;

ホスト名やIPアドレスで絞り込む

select * from information_schema.PROCESSLIST
where
  HOST like '%192:%'  -- ホストIPの一部でlike検索
  or DB = 'testDB'     -- スキーマ名で検索
;

ホスト名で「:」を入れているのは、ポート番号の手前だけでlike検索したいからです。
開発環境だと、末尾だけ異なる似たようなIPアドレスのプロセスが大量に並ぶので、末尾だけで確実に絞り込みたいからです。

あと、重いプロセスをkillする時は、出来るだけホスト名やIPアドレスで絞り込むとよいと思います。
他人のプロセスを間違えてkillすることもないわけじゃないので・・・。
(先日、勝手にkillされて泣きを見た:sob: