hnwの日記

第18回オープンソーステクノロジー勉強会に参加してきました


追記:「1行の大きさの制約の65535バイトを4バイトまで拡張する」が意味不明だったのを修正しました。1行のサイズを2バイトで管理している関係で、通常のMySQLではBLOB型などを除外した1行のデータサイズが256^2-1=65535バイトまでに制限されているのですが、これを4バイトで管理するようにして上限を256^4-1=4294967295バイトにするパッチを作ったよ、ということです。


8/7にGREEさんで開催された、第18回オープンソーステクノロジー勉強会に参加してきました。ひどい雨にも関わらず大盛況でした。久々の参加でしたが、司会をつとめた一井さんはじめGREEスタッフの方々、毎度ありがとうございます。


この日は、「MySQLハッキングの手引き」と題して、MySQLの機能をCレベルでカスタマイズするという内容の講演でした。スピーカーはMySQLカンファレンスでMySQLのインデックスチューニングの話をしていた松信さんでした。1時間の予定が大幅に伸びていましたが、濃い内容でした。


MySQLは利用者も多く、後方互換性の確保に気を遣っているため、MySQL本体への変更はなかなか受け入れられないそうです。その代わり、バージョンアップごとにプラグイン化を進めており、本体への変更なしに挙動を変えられる範囲が徐々に広くなっているそうです。


プラグインの実例として、UDF(ユーザー定義関数)を作成する話題がありましたが、非常に興味深いものでした。かなりざっくり説明すると、あるqueryの結果を元にもう1query投げる必要があるような場合に、queryを投げる代わりにUDFを利用してストレージエンジンAPI経由で検索すると高速になるよ、というものでした。


UDF経由でストレージエンジンAPIを叩くメリットは、SQL文を投げた場合に比べてSQL文の構文解析と実行計画の2フェーズを省略できることです。デモでは、この効果により10倍近い高速化を実現していました。10倍というのは少々作為的な例だったような気もしますが、実案件でも生かせる場所がありそうな話題だと感じました。

続きを読む