PostgreSQLの進化に迫る
基本性能の向上
PostgreSQLは性能においても改善が図られています。近年の性能改善に寄与する改修は、数バージョンにわたってのプランナ改善のほか、同時実行性能の改善、データ更新の改善があります。
図3は、同一マシン上にほぼ同様の設定がされた各バージョンのPostgreSQLで、pgbenchによる性能試験を行った結果です。縦軸はTPS(秒あたりトランザクション回数)単位です。pgbenchは、PostgreSQLのソースセットに付属するベンチマークツールで、グラフ中の囲みに実施パラメータを記載しています。今回行った標準のテストではインデックス検索を行うSELECTとUPDATE、INSERTを組み合わせたトランザクションがテストされます。
バージョン8.3で大幅に成績が向上しています。これは、データ更新性能を改善するHOTと呼ばれる仕組みが導入されたためです。また、本結果には効果が表れていませんが、バージョン8.1や8.2では同時実行性能を改善する大きな修正がされています。
CPUコア数が多ければ(4~8コア以上)効果がはっきり表れます。2009年10月現在、PostgreSQLは、16コア程度までCPU増加により性能が向上することが知られています。弊社で32コアマシンでテストを行った際には、逆に性能劣化することこそ無いものの、性能向上度合いは限定的でした(7.4以前には4CPU以上にすると性能が逆に劣化することがありました)。
なお、グラフ中に記載のある「FILLFACTOR」とは、データ書き込みに際して、ディスクに空きを作っておく機能です(書き込みに有利になります)が、8.2以降でのみサポートされるため、実験条件が異なることを示しています。
なお、PostgreSQLはほかのデータベース製品と比べて性能はどうか、という点が気になるところです。
ベンチマーク結果を公表するには許可が必要なライセンスで販売・配布している製品があるので、あまり詳しいことは言えないのですが、基本的なSQLによる読み書きの性能については大差は無いようです。
複雑なSQLになると、その製品が当該のSQLに対して最適な実行プランを立てるかどうかで性能が変わってきます。これは製品とSQL、データ状況によって当たり外れが出ます。対象に合わせたチューニングをすることができますので、総合的にどの製品が良いのかの判断は難しいです。
各製品とも向上している現在では「何々データベース製品は速い」「何々データベース製品は多機能」と単純には言えないことは確かです(一昔前の基準ならどれも速くて多機能でしょう)。
まとめ
今回は、PostgreSQLの成長を追いながら、現在のPostgreSQLがどのような機能を備えているか説明してきました。PostgreSQLがどう成長してきて、また、多機能と呼ばれるのはどの程度なのかということが、大まかに把握できたかと思います。
次回は、最新メジャーバージョンであるPostgreSQL 8.4に焦点をあてて、詳しく紹介します。
(編集部注:2009.10.13)
2ページ目に一部誤りがありましたので修正いたしました。
×WINDOWS関数→○WINDOW関数 となります。失礼いたしました。