質問: 大量同時並行処理時のmysql 1年くらい前のモバゲーなどはあれだけのユーザとクエリをmysqlサーバ600台位で処理しているそうですが(レプリケーションを考えると実質1/3くらいでしょうが)、どのような工夫がほどこされているのでしょうか? selectよりも処理の重いinsert、updateも1秒間にもの凄い数が来ると思います。 並行処理プログラム等にてdbにアクセスを同時に大量に行う場合等にはどのようなハード構造や、システム設定にすればいいのでしょうか? 1台のdbサーバに複数のmysqlを入れたり、仮想化してosを複数入れて、とかで対処しているのでしょうか? それとも特にそのような事をしなくても(特に更新系の)大量同時クエリを裁くだけの実力がmysqlにはあるのでしょうか? 宜しくお願いします。
回答: モバゲーについてはno.1さんのご回答で十分かと思いますので、 一般的な話で一つ。 mysqlに限らず、単純なwebシステム処理の負荷分散自体は実はそれほど難しくありません。 (あくまで構成的な概念としては、ですがw) 最近の大規模システムの負荷分散だと以下のような感じです。 1、ロードバランサ下にwebサーバ、apサーバ、dbサーバを複数配置 2、web:ap:db = 2:2:1くらいで上記を揃え、各層間でロードバランシングします 3、ストレージをraid10のsanで複数構成し、処理系とは別ネットワークで同期します 更に最近でしたら、これをクラウド上で構築して、 各ノード数を随時調整できるようにしているとかでしょうかね。 但し、クラウドの場合は単純にdbサーバを増やしても物理ストレージが増える訳ではないので i/o負荷によるボトルネックはどうしようもありませんけども。 まぁ要は mysqlの能力云々ではなく、どのdbであっても 全体のシステム構成で負荷をなんとかしているということです。 単純に処理速度の比較であれば、完璧にチューニングされたoracleには敵わないものの チューニングしていない状態であれば大差無かったと思います。