アメブロを支えるMySQL:サイバーエージェントのMySQLチューニング術

杉山貴章(オングス)
2008-11-10 18:42:01
  • このエントリーをはてなブックマークに追加

 アメーバブログ(アメブロ)はサイバーエージェントが運営する無料のブログサービスである。同社のデータベースチームは急激に増加し続けるアクセスに対応し、パフォーマンスを維持するために、データベースの改善を続けてきたという。その経緯と現状が、MySQL ユーザコンファレンス 2008の場で紹介された。

アメブロにおけるデータベース改善の歴史

 サービスを開始した2006年9月時点では、Active-Standby構成のOracle 10g 2台のみで、MySQLは使用していなかった。これで4億PV(ページビュー)を支えていたという。

 その後、アクセスの増加に伴ってハードウェアを拡充し、現在はOracle 10g RAC 4台(Active3台-Standby1台)構成になり、MySQLはマスターに1台、スレイブに41台を導入しているとのこと。

 このシステムは2006年10月からMySQLを導入し、記事、コメント、トラックバックの参照画面を順次、MySQLに移行していった。データの移行に際しては、当初は移行用バッチサーバによる移行を計画したが、時間がかかりすぎるためうまくいかなかったという。

 そこでOracleのUTL_FILEコマンドでデータを出力し、それをMySQLのLOAD DATA INFILEでインポートした。この方法でレコード数約2億400万件を約4時間程度で移行できたとのことだ。

 同時に発行するSQLの改善も行った。これはデータとアクセス数の増加に対して、サーバ増設だけではスケールアウトできなくなったからである。特にrange検索の負荷が大きかったため、ここを中心にSQL改善を行っている。

 基本的な方針はINDEXを見直してexplainの結果が「Using index」になるようにし、I/Oの負荷を軽減させること。そのほか、検索結果や検索範囲の制限も行っている。このSQL改修によってSlow Queryは0になり、Disk I/Oも大幅に減少したが、一方でSQLの発行回数はおよそ2倍に増加し、MyISAMキーバッファミス率も0.09%から0.39%まで増大してしまったという。

Slow Queryは0まで減少 Slow Queryは0まで減少
一方、SQLの発行回数はおよそ2倍に増加 一方、SQLの発行回数はおよそ2倍に増加

 しかし、肝心のLoad Averageは大幅に減少しており、Disk I/O減少の影響が全体のパフォーマンス改善に大きく寄与したことが確認できたとのことだ。

Load Averageは大幅に減少 Load Averageは大幅に減少
Disk I/Oも大幅に減少。これがLoad Averageの減少に大きく寄与した Disk I/Oも大幅に減少。これがLoad Averageの減少に大きく寄与した

 同社では上記以外にも、実際のデータベース負荷を利用したGNU/LinuxとOpenSolaris、Ext3やXFS、ZFSでのパフォーマンス比較などを行い、今後の改善の方向性を模索しているという。また、将来予定している自作サーバ全面導入に向け、SSDや安価なRAIDカードでのMySQL導入テストも実施しており、セッションおよび同社ブースにおいてその結果がレポートされた。

  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]