夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

MySQLTwitterカスタム版が公開されたようです

こんにちは。

ニュースを読んでいると、こんなページを見つけました。

MySQL at Twitter

http://engineering.twitter.com/2012/04/mysql-at-twitter.html

どうやら、MySQLTwitterでカスタムしたものを公開したようです。
Twitterのデータストアとしては、現状MySQLがもっとも大きい模様。
Interest GraphやTimeLine、ユーザデータ、Tweet等、
保存されているデータは多岐にわたるようです。

公開先はこちら。

MySQL at Twitter(GitHub)

https://github.com/twitter/mysql

とりあえず、面白そうだったので一体何についてカスタムしているかを確認してみました。

設定値の追加(特に、InnoDBの設定について追加)

この設定値群の追加によって、ワークロードの把握が容易になり、より確実にシステムの負荷を測ることが可能になるそうです。
初っ端から中々大きい追加機能ですね。
内部を知っているからこその機能だとは思います。

NUMA システムに対した最適化

起動時にInnoDBのバッファを起動時に最大限確保、
メモリが使用できない場合は失敗と扱い検知可能、
高負荷状態でもパフォーマンスを保つようチューニング・・と、
大容量のメモリを持つシステムで性能を発揮できるように改修してあるそうです。

不要なサーバサイドのStatement実行タイムアウト時の対応を除去

これによってミリ秒単位の粒度でタイムアウト設定が可能になったとのこと。
複数の構成要素を組み合わせたシステムでは厳密に各々のタイムアウト切れないと
システムとして組みあがりませんからね。

InnoDBのバッファプールのエクスポート/リストアを安全/低負荷で実施するメソッド追加

再起動するなどのシステムのメンテでは非常に重要な機能ですね。
後は、ビルドツールを用いてサービスを再起動・・とありますが、
Twitterではantやsbtのようなツールを使ってサービスの再起動を行っているということなんでしょうか。

SSDマシンへの最適化

ページ書き込みのアルゴリズム更新によって、SSD寿命を延ばすようディスク書き込みを削減するとのことです。
HDDとSSDではアクセス特性も違うため、それに対応した内容の模様。

・・・と、総じて今のハードに合わせた改修と、
システム管理の容易性を増強する改修のようですね。

MySQLを使うことがあれば、この辺も見るといいかもしれません。