MySQL 5.1では,パーティショニング,イベント,レプリケーションの改良など,多くの新機能が搭載されている。これらの機能は,MySQLの用途を大きく広げるダイナミックな機能である。それに比較すると地味な機能であるが,MySQL 5.1ではログ機能に関する改良が行われている。これらは,運用やチューニングに大いに役立つ機能である。

 レプリケーションに使用するバイナリログに関しては,前回のMySQLウォッチ 第44回で詳しく解説した。今回は,一般クエリー・ログとスロークエリー・ログに関する変更点を解説する。

MySQLのサーバー・ログ

 MySQLには,数多くのログ機能が搭載されている。これらのログは,用途に応じて使い分けられるようになっている。

図1●MySQLのサーバー・ログ

 MySQL 5.1では,エラーログ以外のログ機能が改良されている。今回は,一般クエリー・ログとスロークエリー・ログに関する変更点を解説する。

表1●MySQLのログ機能とMySQL 5.1での改良の有無
改良有無種類内容

エラーログ運用時のエラーおよびサービスの起動および停止を記録
あり一般クエリー・ログ実行したコマンドおよびSQLステートメントを記録
ありスロークエリー・ログ設定した時間を超過したクエリやインデックスを使用しなかったクエリを記録
ありバイナリログデータベースの更新処理を記録レプリケーション処理にも利用

再起動なしに変更可能

 これまで,ログの設定変更は,サーバーを再起動しないと反映されなかった。しかし,MySQL 5.1では,ログの設定変更を反映させるためにサーバーの再起動を必要としない。そのため,一般クエリー・ログとスロークエリー・ログの有効と無効を随時切り替えられる。

テーブルへの保存

 MySQL 5.1では,一般クエリー・ログとスロークエリー・ログの出力方法が大幅に拡張された。従来のテキストファイルに加えて,MySQLテーブルに出力が可能だ。これらのテーブルは,デフォルトではCSVタイプである。MyISAMタイプに変更することも可能だ。

これまでは,目視やテキスト検索で問題個所をピックアップする必要があった。ログの内容をテーブルに格納することにより,SELECTステートメントによって検索することが可能だ。また,CSVタイプのテーブルなので,ログデータをCSV形式のテキストファイルに格納している。そのため,Excelなどの表計算ツールを使用することも容易だ。

1秒以下のクエリもスロークエリー・ログの採取対象へ

 MySQL 5.1.20までは,スロークエリー・ログに採取される閾値の最小値が1だった。MySQL 5.1.21より,最小値が0となり,1秒以下のクエリも採取対象となった。