モノノフ日記

普通の日記です

MySQL ユーザコンファレンス 2008 - MySQL Performance Tuning 1

パフォーマンス向上のポイントとして以下の3点についてのお話でした。

  1. Slow Query Log
  2. Explain
  3. Query Cache

英語のセッションでしたが、内容が基本的なことだったので結構聞き取れた気がします。
チューニングで有名なポイントを挙げられてたのでそんな目新しい話は無かったです。

問題となる点

The Slow Query Log

  • 遅いクエリをリストアップ
    • バージョン3.xから組み込み
  • Queryのどの部分がネックになってるかはわからない
チェックする点
  • Execution Time
    • バッチ処理とかと被ってるかも
  • ユーザ
  • トータルの実行時間
  • Rows in Result
  • Total Rows fetched
5.1で機能拡張
  • Tableにログとれる
  • RuntimeでのON/OFF
  • Microseconds
    • 時間をzeroに
mysqldumpslow
  • slowログをサマライズ
  • 今はbugがある
    • Bug#34129
  • コマンド例
    • mysqldumpslow -s=c -t 10 slow-query.log

Explain Basics

  • 表示は実行順
  • Explainの各カラムの解説
  • using where
  • using temporary
    • tmp tableではない
    • サブクエリ、JOINとかで見れる
  • using filesort
  • using index
  • using index for group by
Visual-Explain

Query Cache

  • Hash-Tableの構造
    • 結果が同じでもクエリのフォーマットが異なるとCacheヒットしない
  • 全てをキャッシュすることはできない
    • 動的なクエリは対象外
  • Query Cacheを大きくしすぎるとpargeに時間がかかってしまう
  • read-heavy なアプリに向いてる