PostgreSQL&MySQL オープンソースDB性能徹底比較(前編)

講師:日本PostgreSQLユーザ会 片岡裕生氏、日本MySQLユーザ会 堤井泰志氏

  • データベース性能検証会 中間発表
  • 検証条件
    • レングス、カラム数の異なるテーブルを準備~
      • A.8バイト8カラム B.8バイト128カラム C.128バイト8カラム
    • フィールドはVARCHARA、先頭のカラムがプライマリキー、10万レコード、ストアドを使用
    • 単体テスト:ストアド/C/JAVA/PHP
    • 1サーバー1クライアント:C/JAVA/PHP
    • 1サーバーNクライアント
    • 原則、テスト時の最新バージョンを使用する
    • データとログのディスクは物理的に分ける
    • Linux Kernel2.6、VMSTATでリソース監視
    • MySQLInnoDBPostgreSQL:vacuum,analyze
    • autovacuumは無し、analyze,checkpointは検証前に実行する
  • ポイント
    • MySQL5.0以降、MyISAMよりInnoDBの方が速い傾向がある
    • PostgreSQLはUPDATE時、「DELETEした後にINSERT」という挙動をする
    • ISERT時、カラム数が多い場合MySQLの速さが顕著
    • SELECT時、実はPostgreSQLの方が速い
      • MySQLは実データを取って来る、PostgreSQLはデータは取って来ない~

それを差し引いても、目に見えてPostgreSQLが速い~

    • 同時接続数200クライアントを越えると、MySQLの性能が激しく悪化する
      • NPTLで大分改善はした
    • Prepareの効果
      • PostgreSQL:約2倍は向上、是非利用したい
      • MySQL:1.数倍 それほど効果は高くない
    • vacuumの効果(PostgreSQL
      • 大量件数を扱い場合、vacuum無しだと目に見えて性能DOWN~

vacuumはしようぜ!

    • MySQLは内部コードのUTF-8にすると明確にパフォーマンスアップする
    • CPU追加時、MySQLは4CPUまで、PostgreSQLは16CPUまでスケールする
      • 改善中
  • まとめ
    • PostgreSQLはかなり速い
      • SELECTは断然速い
    • PostgreSQLは同時接続数が増えても性能が落ちない
    • どちらもかなりの負荷に耐え得る
    • MySQLのソケット性能はパフォーマンスが高い
    • MySQLのJoinは実は速い!
    • 条件にもよるが、世間一般の噂「速さのMySQL」「機能のPostgreSQL」は、検証してみると意外な事実が明らかになる