Posted at

【MySQL】processlistでwhereを使う

More than 1 year has passed since last update.


プロセスを確認する方法は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: