TECH BLOG
技術ブログ
  • 2025-11-10 PostgreSQLPostgreSQL バージョンアップ

    PostgreSQLのバージョン間の性能差を検証(1)

本記事の概要

PostgreSQL のバージョン 15〜18 において、pgbench のベンチマークスクリプトを利用して性能を比較検証しました。
PostgreSQL のメジャーバージョンアップでは、クエリプランナや並列処理、ストレージ管理などに様々な改善が行われています。
そこで、一般的なベンチマークスクリプトである pgbench でどの程度の性能差が出るのかを確認した内容となります。

検証

検証は以下の環境で実施しました。

  • RockyLinux 9.6
  • PostgreSQL 15.14
  • PostgreSQL 16.10
  • PostgreSQL 17.6
  • PostgreSQL 18.0

各バージョンとも、同一サーバ上でビルド・初期化を行い、同一設定で実施しています。
shared_buffers や work_mem などは、マシンスペックに合わせて一般的な目安とされている値に設定しました。

検証方法

pgbench のデフォルトスクリプトを用いて、以下の 2 パターンで性能を測定しました。

データサイズ = 約 650 MB でのテスト

テストに利用したコマンドは下記となります。

$ pgbench -i -s 50
$ pgbench -c 1 -j 1 -T 300
データサイズ = 約 6.5 GB でのテスト

テストに利用したコマンドは下記となります。

$ pgbench -i -s 500
$ pgbench -c 24 -j 12 -T 600

オプションの意味は

  • -i は、データベースの初期化
  • -s は、初期化するデータベースのスケール(サイズ、データ件数)
  • -c は、テストの同時接続数
  • -j は、テストのスレッド数
  • -T は、テストの実行時間(秒)

となります。
「データサイズ = 約 650 MB でのテスト」では、1 接続(並列)で SQL 実行されています。
「データサイズ = 約 6.5 GB でのテスト」では、24 接続(並列)で SQL 実行されています。

「データサイズ = 約 650 MB でのテスト」の結果

「データサイズ = 約 650 MB でのテスト」の結果を、各バージョンごとに比較したものが下記となります。

バージョン count tps min max p95 p99
15 131,702 回 439.029 t/s 0.772 ms 94.617 ms 3.081 ms 3.671 ms
16 117,048 回 390.185 t/s 0.825 ms 123.628 ms 3.114 ms 3.685 ms
17 124,010 回 413.392 t/s 0.719 ms 93.071 ms 3.220 ms 3.850 ms
18 132,579 回 441.962 t/s 0.711 ms 123.412 ms 3.058 ms 3.703 ms

各項目の説明は下記となります。

  • count: 実行されたトランザクション数。
  • tps: 1秒あたりに処理されたトランザクション数。数値が高いほど高性能です。
  • min: 実行時間の最小値。最も短いトランザクション処理時間です。
  • max: 実行時間の最大値。最も遅いトランザクション処理時間です。
  • p95: 全トランザクションのうち 95% が、この時間以下で完了したことを表しています。
  • p99: 全トランザクションのうち 99% が、この時間以下で完了したことを表しています。

「データサイズ = 約 6.5 GB でのテスト」の結果

「データサイズ = 約 6.5 GB でのテスト」の結果を、各バージョンごとに比較したものが下記となります。

バージョン count TPS min max p95 p99
15 640,942 回 1,068.148 t/s 3.213 ms 326.528 ms 35.488 ms 45.360 ms
16 640,286 回 1,067.007 t/s 3.157 ms 321.920 ms 35.635 ms 45.356 ms
17 643,062 回 1,071.746 t/s 2.718 ms 357.700 ms 35.415 ms 45.279 ms
18 645,866 回 1,076.410 t/s 2.568 ms 318.386 ms 35.163 ms 44.910 ms

検証結果から確認できること

上記の通り、PostgreSQL 15 から 18 の間で大きな性能差は見られませんでした。
pgbench のテストスクリプトは比較的シンプルな SQL で構成されていますので、このような単純な処理であれば、バージョン間の性能差を特に気にする必要はないと考えられます。
※ pgbench のテストスクリプトの詳細は、公式ドキュメントを参照してください
【 PostgreSQL 17.5文書 - pgbench - 】
https://www.postgresql.jp/document/17/html/pgbench.html

また、pgbench に -N や -S オプションをつけることで、実行される SQL の傾向を変更できますが、その場合でも同じくバージョン間で特に大きな性能差は見られませんでした。

一方で、PostgreSQL はバージョンアップに伴い、並列処理やソート処理などの性能改善が行われています。
新機能を活用する SQL を実行している場合は、バージョンによる性能差が出る可能性があります。
また、パラメータ調整などによっても、異なる結果となる可能性がありますので、引き続き検証を続けていく予定です。

まとめ

今回の検証で、pgbench のテストスクリプトにおいて、PostgreSQL のバージョン間による大きな性能差は確認できませんでした。
PostgreSQL 15 から 18 のいずれのバージョンでも、極端な性能低下や向上はなく、安定したトランザクション処理性能を確認できました。

ただし、今回の検証は、pgbench のテストスクリプトを、インサイト社内での環境で実行した結果である点にご留意ください。
SQL の内容やパラメータ設定、サーバスペックなどによっては、今回の結果と異なる可能性があります。
そのため、実際に PostgreSQL をバージョンアップする際には、標準的なベンチマークだけでなく、実際の運用で使用されている SQL やワークロードを用いて性能検証を行うことが推奨となります。

CATEGORY

ARCHIVE

PostgreSQLに関するご相談は
株式会社インサイトまで
お気軽にお問い合わせください。

CONTACT