Mysqlクエリログの形式は何ですか?特に、次のような行の場合:
133 Query commit
133 Query rollback
「133」は何の略ですか?そして、各行がデータベースへの往復通信を表すということは本当ですか(つまり、それらはバッチ化されていません)?
一般的な一般的なログ形式は次のとおりです。
Time Id Command Argument
110208 12:12:06 771 Query rollback
特定のタイムスタンプで複数のクエリが表示されることもあります。IDは、クエリを実行したMySQL接続スレッドIDを示します。クエリが実行されたことを示す「クエリ」タイプのコマンドであり、引数は実際にはクエリそのものです。
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」に設定することで行われます。