MySQLのパフォーマンスの話
View more presentations from ikdttr.
- 今日は、スライドの作成者である mir さんにお越しいただき、
MySQL の Source Hacking 勉強会をしていただいた。- mir さんは、 を共著されています。
- いくらか私にしかわからないような内容かもしれないですが、勉強会でのメモを記録しておきたいと思う。
- MySQL の Source をどういうときに読むのか?
- パラメタチューニングの際、パラメタが実際どのように使われているものなのか追跡するため。
- 各 Source の置き場所
MySQL のサイトから取得してきた Source ディストリビューションを展開した直下の
sql ・・・ mysql サーバ
strings ・・・ユーティリティ
storage ・・・ Storage Engine
etc...- mysqldump などのユーティリティ、1つの機能につき、たいてい 1 つの Source ファイルが対応する。
- Source のデバッグ、gdb を使って、backtrace を使えば一発でわかる!
- 処理の断面図をとろう。
- Source に慣れよう
- 様々なところにブレークポイントをはって、どの処理でも共通で使用されるフローがあることに気づこう。
- 共通の流れ→内部的な処理を行っている→重要な処理→くりかえしデバッグする→ロジックの流れが頭の中にできてくる。
- gdb -tui が便利。 n で次のステップへ。
- gdb 7.0 はリバース実行ができるらしい。
- emacs → cscope を使えば一発で分かる。
- mysql のパラメタの網羅
- mysqld.cc の my_long_options 配列に格納される
→パラメタ名が処理を追う手がかりになる。- 障害解析
- 障害が発生する条件に目星をつける。
その上でデバッギング
エラーメッセージ、エラーコードを目印にする。
シンプルな再現手順を見極める。