web-dev-qa-db-ja.com

mysqlクエリログの形式

Mysqlクエリログの形式は何ですか?特に、次のような行の場合:

133 Query     commit
133 Query     rollback

「133」は何の略ですか?そして、各行がデータベースへの往復通信を表すということは本当ですか(つまり、それらはバッチ化されていません)?

6
JRR

一般的な一般的なログ形式は次のとおりです。

Time              Id Command    Argument
110208 12:12:06   771 Query rollback

特定のタイムスタンプで複数のクエリが表示されることもあります。IDは、クエリを実行したMySQL接続スレッドIDを示します。クエリが実行されたことを示す「クエリ」タイプのコマンドであり、引数は実際にはクエリそのものです。

4

MySQL General Query Log のフィールドは次のとおりです。

yymmdd hh:mm:ss thread_id command_type query_body

タイムスタンプは、変更されるたびにのみ表示されます。

SHOW PROCESSLIST; に示すように、例では "133"が接続されたクライアントのスレッドIDになります。

各行は発行されたクエリを表しますが、ストアドプロシージャおよびストアドファンクション内で発行されたクエリもログに記録され、実行中のプロシージャまたは関数は、応答として多くのクエリを発行できるため、必ずしもクライアントからデータベースへの往復ではありませんクライアントからの単一のクエリ。

また、MySQLへのいくつかの言語のコネクタの基礎となるライブラリであるMySQL C-APIは 複数ステートメントの実行 をサポートします。これは、複数のクエリが必ずしも複数のラウンドトリップを表すとは限らない別のケースです。複数のクエリを「バッチ」としてデータベースに送信できますが、これは、この機能が呼び出し元のアプリケーションで使用されている場合の要因にすぎません。

一般的なログは、mysql.general_logテーブルに書き込むように指示することもできます。これは、ファイルベースのログよりも解析と分析が簡単ですが、その形式を使用する場合、上記と同じ一般的な観察が当てはまります。

slow query log にはより多くの情報が含まれているため、サーバーのパフォーマンスを理解するためのより有益なログを提供し、allのログとして使用できますすべてのクエリを「遅い」基準を満たすものとして解釈するようにMySQLを設定することによりクエリ。これは、スロークエリログを有効にした後、 long_query_time を「0」に設定することで行われます。

9