講師:日本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でリソース監視
- MySQL:InnoDB、PostgreSQL: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~
- 同時接続数200クライアントを越えると、MySQLの性能が激しく悪化する
vacuumはしようぜ!
-
- MySQLは内部コードのUTF-8にすると明確にパフォーマンスアップする
- CPU追加時、MySQLは4CPUまで、PostgreSQLは16CPUまでスケールする
- 改善中
- まとめ
- PostgreSQLはかなり速い
- SELECTは断然速い
- PostgreSQLは同時接続数が増えても性能が落ちない
- どちらもかなりの負荷に耐え得る
- MySQLのソケット性能はパフォーマンスが高い
- MySQLのJoinは実は速い!
- 条件にもよるが、世間一般の噂「速さのMySQL」「機能のPostgreSQL」は、検証してみると意外な事実が明らかになる
- PostgreSQLはかなり速い