MySQLでリアルタイムにクエリの実行状況を見る【小ネタ】

MySQL関連の小ネタです。

システムのレスポンスが悪くなってしまった場合のアプローチとして、CPUやメモリ、ディスク等を総合的にチェックし、原因を特定していきますが、MySQLでリアルタイムにクエリの実行状況を見ることもあるかと思います。

その際、MySQLのSQL文「show processlist」が有名ですが、このSQL文の弱点は、大量に実行中のクエリがある場合に画面が流れてしまったり、特定の条件で絞り込みができない等あり、結構使い勝手が悪いです。

そこで「information_schema.processlist」を使うことで柔軟にクエリの状況を見ることができます。(古いバージョンのMySQLでは使えない可能性あり)

例えば、、、

select *
from information_schema.processlist
where COMMAND<>'Sleep'

とすると、Sleep状態のプロセスを除外したものを取得してくれます。

ほかにも、

select *
from information_schema.processlist
order by TIME desc
limit 10

とすると、実行時間が長いプロセスの上位10件を取得してくれます。

ですので、あらかじめ自分で抽出したい条件を整理し、手元に控えておくことで突発的にMySQLでリアルタイムにクエリの実行状況を見る場合に役に立ちます。