1. ホーム
  2. mysql

[解決済み] MySQL のライブクエリを表示するにはどうすればよいですか?

2022-03-18 09:52:37

質問

Linux サーバで MySQL クエリが発生したときに、それをトレースするにはどうすればよいですか?

例えば、ある種のリスナーをセットアップして、ウェブページをリクエストし、エンジンが実行したすべてのクエリを表示したり、本番サーバーで実行されているすべてのクエリを表示したいのです。 どうすればよいのでしょうか?

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

MySQLのコマンドを実行することができます。 SHOW FULL PROCESSLIST; を使えば、その時々に処理されているクエリを確認することができますが、おそらくあなたが期待しているようなことはできないでしょう。

サーバーを使用するすべてのアプリケーションを変更することなく履歴を取得する最善の方法は、おそらくトリガーを使用することです。クエリを実行するたびに、そのクエリがある種の履歴テーブルに挿入されるようにトリガーを設定し、この情報にアクセスするための別のページを作成することができます。

ただし、この場合、サーバー上のすべての動作がかなり遅くなることに注意してください。 INSERT をクエリごとに追加しています。


編集:もう一つの選択肢は 一般的なクエリログ しかし、フラットファイルに書き出すと、表示の柔軟性、特にリアルタイムでの表示の可能性が大きく損なわれます。もし、何が起こっているかを見るためのシンプルで簡単な方法をお望みなら、GQLを有効にしてから、実行中の tail -f をログファイル上で実行すればよいでしょう。