🐘

PostgreSQLの性能評価をツールで簡単に一括管理

に公開

PostgreSQLの性能評価をツールで簡単に一括管理

はじめに

PostgreSQLの性能を比較したいとき、みなさんはどのように測定していますか?
単純に pgbench のような性能評価ツールを使うだけでも結果は得られますが、
環境差・手順差・タイミング差 により再現性がばらつきやすいのが課題です。

そこで、測定の手間や環境差を減らすために、
pgbenchによるベンチマークを自動化・定型化し、
さらに CPU温度 / 電力 / クロックMHz / ストレージ温度 まで同時計測できる
🧩 「pgbench-compare」 を作成しましたので紹介します。


ツール概要

  • 名称: pgbench-compare
  • リポジトリ: mono-tec/pgbench-compare
  • 対応環境: Windows(PowerShell 7)
  • 主な機能:
    • pgbench の実行条件を自動設定
    • 実行結果をログ・JSON形式で保存
    • CPU温度 / 電力 / クロックMHz / ストレージ温度を同時計測
    • システム情報(CPU / OS / メモリ)を自動取得
    • 結果を比較可能な形式で蓄積(summary.csv

実行手順(Windows)

① 初期準備

windows\prep_db.bat
  • 接続先情報を入力すると、secrets/pgpass.localrun_pgbench.ps1 を作成します。
  • テストDBが存在しない場合は自動作成します。

② ベンチマーク実行

ベンチマークを一括実行するには、次のバッチを実行します。

CPU温度や電力の取得に必要なため、自動で管理者モードに昇格して実行されます。
※既に管理者権限で実行している場合は、そのまま継続されます。

windows\launch_all.bat
  • 標準(std)/読み取り専用(readonly)/書き込み専用(writeheavy)の3種類を
    順番に実行します。

③ 集計(JSON → CSV)

windows\summarize.bat
  • results/raw/*.json から results/summary.csv を生成します。
    (既存CSVは連番バックアップとして保存されます)

出力結果は下記のように results/raw/ フォルダに格納されます。

results/raw/
├─ 20251101-MyPC-win11-std.json
├─ 20251101-MyPC-win11-readonly.json
├─ 20251101-MyPC-win11-writeheavy.json
└─ summary.csv

JSON出力例

{
  "timestamp": "2025-11-01T21:43:23+09:00",
  "workload": { "profile": "readonly", "duration_s": 60 },
  "results": { "tps_avg": 6374.865, "latency_ms_avg": 0.157 },
  "perf": {
    "cpu_temp_c": { "avg_overall": 56.6 },
    "cpu_power_w": { "avg_overall": 8.3 },
    "cpu_clock_mhz": { "avg_overall": 3100 },
    "storage_temp_c": { "avg_overall": 40.2 }
  }
}

性能値(TPS/Latency)と温度・電力などの物理指標を参考値となりますが、
同じタイムスタンプで分析
できます。


サンプルのご提供

Windows端末での PostgreSQL運用構成の違いによる性能傾向 を調べる目的で、
自分の学習記録と検証メモを兼ねてサンプルデータを公開しています。

実際の出力画面イメージ

下記のように、出力結果をブラウザで直接閲覧できるようにしています。
(pgbench結果のJSONとCPU-Z HTMLを並べて確認できる形式です)

① 一覧ビュー

サンプル一覧画面

② 端末詳細ビュー

端末詳細ビュー(CPU-Z+JSON)

③ JSON出力ビュー

pgbench結果JSONビュー

これにより、ベンチマーク結果をブラウザで比較・確認できるようになりました。
GitHub上では直接は閲覧できませんが、
ローカルにダウンロードして開くとブラウザで確認できます。

本HTMLビューアは検証用途の簡易ツールです。
CPU-Z HTMLレポートにはサニタイズ(UUID・MAC・Serial・URL などのマスク処理)を実装していますが、既知・未知の脆弱性に対する完全な保証はできません
ご利用は自己責任でお願いします。
解析や可視化は、公開されている JSON および summary.csv を活用し、
AIツールやスクリプト、BIツール等で自由に分析していただく形を推奨します。


本記事は、
PostgreSQL Advent Calendar 202512月2日 に参加しています。

PostgreSQL の性能評価やベンチマーク自動化に関する話題を扱っています。
他の日の記事も興味深い内容が多いので、ぜひあわせてご覧ください。


📦 最新版リリース
👉 https://github.com/mono-tec/pgbench-compare/releases

Discussion