データベース

MySQLとPostgreSQLの性能比較

先日の「オープンソースカンファレンス OSC2007/Tokyo Spring(2)」の記事で、OSC2007 Tokyo Spring の 2 日目に行われた「PostgreSQL&MySQL オープンソースDB性能徹底比較」について触れましたが、ようやくまとめましたので報告です。

私の記憶を頼りにしているので間違いが含まれているかもしれません。また、勝手に内容バラしちゃダメってことであればご指摘下さい。

最近のMySQLとPostgreSQLの特徴

最近のMySQLとPostgreSQLの特徴を簡単にまとめてみました。

MySQL

カラム数が多い
SELECT は遅い(カラム数が少なくてデータ量が一緒の場合と比べて)
MySQL5.0 からは InnoDB の方が MyISAM より SELECT が速いかも(カラム数が少ない場合)

PostgreSQL

SELECT と DELETE はやっぱり速い
カラム数が多いと遅いけど、PostgreSQL8.2 から改善されている

MySQLとPostgreSQLの性能比較

MySQL の SELECT は、データをメモリ上に取得しちゃうから遅いとのことでした。

メモリ上だと早い気もしますが、メモリを多く搭載できる環境の場合に限られますね。
(ここは時代次第)

SELECTはPostgreSQLの圧勝
INSERTはMySQLの勝ち
UPDATEはMySQLの勝ち
DELETEはPostgreSQLの勝ち

その他の性能トピックス

箇条書きでざっくりと紹介します。

  • MySQL で大量のデータを登録する時は、25000 件に 1 回くらいの割合でコミットするといい
  • ネットワーク越しの DELETE は MySQL が速い
  • 同時接続数が 200 を超えると、MySQL が一気に遅くなる
  • テーブルの JOIN(2つ)・・・MySQL が速い
  • テーブルの JOIN(3つ)・・・MySQL が速い
  • テーブルの JOIN(4つ)・・・なぜか PostgreSQL が速い(3つの時よりも性能アップ)

まとめ

こちらも箇条書きでざっくりと紹介します。

  • MySQL は InnoDB も十分速くなった
  • PostgreSQL はかなり速い
  • MySQL の JOIN は速い