いやっちゅーほど繰り返されてきた議論ですが、
両者とも明確なメリット&デメリットがあり、
極論するなら、消去法で選択するしかありません。
postgresqlの場合
- insertが比較的早い
- updateを繰り返すと、性能が落ちてくる。vacuumが必要。
- vacuumするには、テーブルロックが必要。な場合がある。
- レプリケーションが未実装。
- connectは比較的遅い。
mysqlの場合
- readだけなら早い→そんな案件今時あるの?
- レプリケーションが比較的簡単&安定→readonlyスレーブ増やして負荷分散、はよくある発想。面倒だが。
- innodb insert/updateが激遅い。
- sqlに方言がやたら多い。
- 複雑なsqlを投入すると、最適化に失敗する。と言うか最適化する気がないっぽい。
- connectは比較的早い。
- myisamは結構壊れる。(しかも普通に使っていて)
- innodbも稀に壊れる。(しかも普通に使っていて)
エンタープライズ業界なら、これの何れか、もしくはOracleでイイヤ、
って話になるでしょうけど、
ソーシャルゲームであると、データ量、時間あたりの処理量が
指数的に増大します。
テーブル分割に対する実装コストも馬鹿になりません。
であれば、NoSQLを使ってしまえ、というのは手です。
NoSQLは数有りますが、近頃実績が増えてるっぽいのが、mongodbでしょう。
http://www.infoq.com/jp/news/2010/10/4square_mongodb_outage
これらのトラブルも、過渡期であるが故です。
それにこのトラブルは、会員数300万人とかのレベルなんで、
仮にmysql/postgresqlで運用していたとしても、
別のトラブルが有ったであろう人数と言えましょう。知らないけど。
シャードの不均一化が原因だって話なんで、
最初から、細かいテーブル(コレクション)に分割してしまえば済む話かも知れません。
メモリ使用的にもその方が有利らしいし。
http://www.mongodb.org/pages/viewpage.action?pageId=18448682
こんな事が出来るのも、スキーマレス、create tableイラズだからです。