Postgres8.4のベンチマークを取ってみた
※2009/7/19追記
こちらの方がおそらく正確でしょう。
先週行う予定だったベンチの結果です。
http://www.techscore.com/tech/sql/pgbench/6.html
http://www.techscore.com/tech/sql/pgbench/7.html
http://www.techscore.com/tech/sql/pgbench/8.html
こちらのベンチ方法を元に各バージョンのベンチマークを比較してみました。
postgresql.confはメモリとかWALとかコネクション関係とか
設定を合わせた方が良いかなーと思いつつ変更していないため、
100%の比較にならないのかもしれません。
でも指標くらいにはなるでしょう。*1
ハード環境(仮想サーバ上のLinux)
CPU | Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz (これの1コアのみ) |
メモリ | 1024MB |
OS | CentOS 5 |
バージョン毎の共通手順
- postgresとpgbenchを普通にインストール
- initdbでDB初期化
- Postgres起動
- DB作成(データベース名=test)-createdb
- テストデータ作成
- pgbench -i -s 25 test
- テストが終わったらPostgres停止
テスト方法(こちらのパクリ:http://www.techscore.com/tech/sql/pgbench/6.html)
- 正確なデータを計測するために、同条件で5回テストを実行しその平均をとります。
- テスト結果に用いられる値は、tpsの算出にクライアントとの接続の確立にかかった時間を含めないものを使用しています。
テスト結果
ベンチ1
- | 10/100 | 50/100 | 100/100 |
8.4.0 | 166.5 | 170.25 | 172.75 |
---|---|---|---|
8.3.7 | 148.75 | - | 139.75 |
8.2.13 | 129 | - | 149.2 |
8.1.17 | 108.4 | - | 113 |
8.0.21 | 116.8 | - | 113.8 |
7.4.25 | 129.4 | - | 123.8 |
ベンチ2
- | 1/1000 | 1/3000 | 1/5000 |
8.4.0 | 135.5 | 191.75 | 181.25 |
---|---|---|---|
8.3.7 | 132.8 | - | 175 |
8.2.13 | 163.2 | - | 119.2 |
8.1.17 | 102.6 | - | 111 |
8.0.21 | 106.8 | - | 120.8 |
7.4.25 | 119.8 | - | 136.5 |
ベンチ3
- | 10/100 | 30/300 | 50/500 |
8.4.0 | 148 | 222.5 | 218.75 |
---|---|---|---|
8.3.7 | 156.6 | - | 194.6 |
8.2.13 | 144.2 | - | 130 |
8.1.17 | 112.25 | - | 111.4 |
8.0.21 | 114.6 | - | 126.2 |
7.4.25 | 114.6 | - | 133.4 |
ベンチ4
- | 10/100 | 30/300 | 50/500 |
8.4.0 | 1037 | 1205.4 | 3405.2 |
---|---|---|---|
8.3.7 | 965.6 | - | 1867.2 |
8.2.13 | 1064 | - | 1347.5 |
8.1.17 | 1053 | - | 2280.4 |
8.0.21 | 1089 | - | 2645.6 |
7.4.25 | 1004.6 | - | 1642.5 |
8.4以外、真ん中の値が無いのはただの手抜きですw
バージョンが上がるにつれて、順当にパフォーマンスも良いですね。
ただSELECT(ベンチ4)の結果は結構ばらつきが多く、5回ではなく10回くらいで行った方がよさそうです。
というか、ベンチ4の結果が怪しいのは
パラメータ設定を合わせてないからのような気がします…
コンフィグパラメータ合わせてのベンチも余裕があればやりたいですね。*2
それにしても集計が結構面倒だったな…
これPerlスクリプトにしてYAML管理出来るようにすればちょっとは需要あるかな?
てか自分が欲しいので後で作ってみよう。