こんにちは。
職人見習いの高嶋です。
MySQLパフォーマンスチューニング vol.1で紹介したSlowLogの続きになります。
指定した秒数を超えるSQL文の実行があった場合、SlowLogにそのSQL文の情報が記載されると
前回紹介しましたが、それ以外にも、インデックスを使用していないSQL文を記載する事もできます。
/etc/my.cnfにて、下記の設定をすることで可能です。
log-long-format インデックスを使用しなかったSQL文も記録します
不特定多数が実行するサービスにおいて、インデックスを利用していないSQL文を
利用している場合は大抵問題となります。
ちなみに、以下のような形式でログに記載されます。
# Time: 040623 22:53:30
# User@Host: [ODBC] @ localhost [127.0.0.1]
# Query_time: 0 Lock_time: 0 Rows_sent: 239 Rows_examined: 239
select * from country;
1行目 記録日時
2行目 ユーザーIDとリクエストした端末
3行目 Query_time(実行時間) Lock_time(ロック時間) Rows_sent(送信行数) Rows_examined(処理対象となった行数)
4行目 SQL文
「Query_time」がSQLの実行時間である事から、指定秒数は超えていないにも関わらず
インデックスを全く利用していないSQL文である為、このように記録が残ります。
※この記事は、なかの人(piro556)が書いています。