先日の MySQL Conference 2009 のプレゼン資料は公開されていますが、その中で MySQL V3 Google Patch のパフォーマンスに関するスライドが公開されていたので、さっそくチェックしてみました。
該当する講演は、「This is Not a Web App: The Evolution of a MySQL Deployment at Google」にあたると思われます。
MySQL colud performance というスライドから。
- ベンチマークツール: iibench、sysbench、wisconsin
- InnoDB を高速にするには、tcmallock とリンクする、XFS ( noatime,nodiratime,nobarrier オプションを指定するのがいいらしい)を使う、マルチコアサーバ用の mutex contention を減らす、複数のバックエンドの I/O スレッドを使って忙しいサーバの I/O の割合を減らす
- IO バウンドのチューニング方法: innodb_read_io_threads、innodb_write_io_threads、という Google Patch で提供されている値
- innodb_read_io_threads: 完全テーブルスキャン用の事前フェッチがたくさんあるときの助けとなるパラメータ
- innodb_write_io_threads: たくさんの遅延があるときの助けとなるパラメータ(SATA writeback キャッシュなしで O_DIRECT を使っているとき、ハードウェア RAID write cache なしで O_DIRECT を使っているとき、ネットワーク接続のストレージを使っているとき)
- innodb_io_capacity: たくさんの書き込みがあるときの助けとなるパラメータ
- SHOW INNODB STATUS というコマンドが追加されている
- いくつかのベンチマークテスト結果が紹介されている、例えば 2 CPU core, 4GB or 8GB RAM、ソフトウェア RAID 0 で2台のハードディスク接続、XFS、innodb_buffer_pool_size=1TB, O_DIRECT, innodb_flush_log_at_trx_commit=2、MySQL 5.0.37 + v3 Google Patch + tcmallock の組み合わせで innodb_io_read_threads を 1 から 2 にすると20 秒くらい IO バウンドが下がった
- 仮想化なしの場合、8 コア以上だと Concurrent users が増えるたびに TPS が良くなる(4 コアだと 4 Concurrent users 以上にしても TPS は変わらない)
- Xen や KVM で仮想化した場合のパフォーマンスも解説されている
- このパッチは、MySQL 5.4 で入る予定(今年リリース予定とのこと)
さらに興味のある人は、講演の動画も BLIP.TV で公開されているのでチェックしてみるといいでしょう。
Tags: mysql






