最近クエリチューニングの仕事があったので、少し深めに知ろうと読んだ。
MySQLの内部構造がどうなっているかは置いておいて、どうすればクエリの問題を把握できるかが素早く知れる良い本だった。90ページくらいですぐ読めるのも良い。個人的にはHandler_%変数を使った調査、innotopによる状況可視化、sys.innodb_lock_waitsによるロック状況の可視化あたりが非常に参考になった。
ちなみにさらに内部構造に踏み込んで理解しようとするなら、以下の記事がおすすめ。
- 雑なMySQLパフォーマンスチューニング
- MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ
- Rails Developers Meetup 2018 で「MySQL/InnoDB の裏側」を発表しました - あらびき日記
読書メモ
- Anemometerというpt-query-digest専用のグラフ化ツールがある 14 - クエリがどれだけ行を読み込んだのかは、Handler_%ステータス変数で確認できる 18 - 統計情報が間違っているときはANALYZE TABLEステートメントで解消できる 19 - EXPLAIN FOR CONNECTION nでnにSHOW PROCESSLISTのIdを指定すると、現在実行中のステートメントをEXPLAINできる 23 - innotopでMySQLのクエリ実行状況やステータス変化の変化などをtopコマンド風に出力できる 35 - ALTER TABLE実行時の負荷モニターや、高負荷状態での状況確認に使いやすい - sys.innodb_lock_waitsで待っているクエリー、待たせているクエリーを一覧できる 71