2

指定された秒数が経過した後にプロセス ID を強制終了する MySQL スロー クエリ キラーがあり、正常に動作します。ただし、非常に遅いクエリ全体も通知で確認したいと考えています。

問題は、mysqladmin -v processlist|grep process_id動作するはずですが、改行を含むクエリを切り捨てることです。

SELECT * FROM table WHERE x=y {
  ... stuff
};

ここで内容が切り捨てられ、クエリが切り詰められます。(私は DBA ではないので、構文的に正しくない可能性があることは理解していますが、アプリケーションで時々処理しなければならない種類のクエリ フローの例を示したかっただけです。形式について文句を言わないでください。 、それは私の決定ではなく、私の管理下にもありません。)

でクエリを実行するinformation_schemaとこれが解決すると思いますが、そのデータベースに対するクエリがパフォーマンスに影響を与えることが多いため、チームはこれを実行したくありません。これにアプローチするより良い方法はありmysqladminますか?

4

1 に答える 1

2

スローログを有効にすることをお勧めします。長い時間がかかっているステートメント、どのくらいの時間、および追加の詳細が表示されます。その中にない限りSTORED PROCEDURE

まだスローログが有効になっていない場合は、最初にスローログを有効にする必要があります。

低速クエリ ログを有効にするには、--log-slow-queries[=file_name]オプションを使用して mysqld を起動するか、構成ファイルの値を変更してサービスを再起動します。以下を参照してください。

スロー クエリ ログ ファイルが有効になっていて、名前が指定されていない場合、デフォルト名は host_name-slow.log で、サーバーは PID ファイルを作成するディレクトリと同じディレクトリにファイルを作成します。名前が指定されている場合、別のディレクトリを指定するために絶対パス名が指定されていない限り、サーバーはデータ ディレクトリにファイルを作成します。

出力 (データを読み取ることができる場所) をFILEまたはに設定できます。TABLE

my.ini ファイルを変更し、それらを変更/追加します

log-output = TABLE
slow-query-log=1
long_query_time = 10
log-queries-not-using-indexes

これにより、完了するまでに 10 秒以上かかるクエリがログに記録されます。さらに、インデックスを使用していないクエリ。

あなたが行くならlog-output=table、あなたは単に実行することができます

select * from mysql.slow_log

その場合log-output=fileは、MySql フォルダー内の物理ファイルを開く必要があります。

于 2013-11-12T13:23:16.120 に答える