#garagekidztweetz

id:garage-kid@76whizkidz のライフログ・ブログ!

MySQL の Source を読もう!

スポンサーリンク

  • 今日は、スライドの作成者である mir さんにお越しいただき、
    MySQL の Source Hacking 勉強会をしていただいた。
  • mir さんは、MySQLデータベース構築バイブル を共著されています。
  • いくらか私にしかわからないような内容かもしれないですが、勉強会でのメモを記録しておきたいと思う。
  • 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 配列に格納される
      →パラメタ名が処理を追う手がかりになる。
  • 障害解析
    • 障害が発生する条件に目星をつける。
      その上でデバッギング
      エラーメッセージ、エラーコードを目印にする。
      シンプルな再現手順を見極める。