Twitter

4月9日(米国時間)、TwitterはMySQL 5.5に独自の機能強化を行った「Twitter MySQL 5.5」をオープンソースとして公開した。Twitterでは、タイムラインやユーザデータ、インタレストグラフ、ツイートなどをMySQLで管理しており、Twitter MySQLはオープンソースのソフトウェアであるMySQLに対して、Twitterの開発者がニーズに合わせて独自の改良を行ったものだとしている。

Twitter MySQL 5.5で強化や改良された機能は次のとおり。

  • InnoDB内部のステータス変数の追加
  • NUMAアーキテクチャのメモリ割り当ての最適化
  • サーバサイドのステートメントタイムアウトサポートの改善
  • InnoDBバッファプールのエクスポート及びリストア
  • SSD向けの最適化

InnoDB内部のステータス変数の追加では、InnoDBファイル及びテーブルスペースファイルのオープン/クローズやデッドロック数などの情報を取得できるようになっている。この情報取得によって効果的にシステムを監視でき、ワークロード処理を深く理解できるようになるという。

NUMAへのメモリ割り当ての最適化では、InnoDBテーブルのバッファプールに大量のメモリ割り当てを行うと非効率的になり、深刻な問題が発生する場合があった。この問題を解決するため、バッファプールの起動時に強制的にプリアロケートさせる機能などが追加されている。

その他、ステートメントタイムアウトサポートの改善によって不要な作業を減らしたり、SSDの寿命を伸ばすためにディスク内のページフラッシュの挙動や削減などを最適化している。

Twitter MySQL 5.5のソースコードはGitHubで公開されている。MySQLはGPLv2と商用ライセンスのデュアルライセンスを採用しているが、Twitterが開発した拡張機能部分についてはBSDスタイルライセンスを採用しているという。