ディスカッション (9件)
PostgresBenchは、PostgreSQLサービスの性能を公平かつ再現性高く測定するために設計されたベンチマークツールです。環境による測定のバラつきを抑え、DBパフォーマンスのボトルネックを素早く特定したいエンジニア必見のソリューションです。
PlanetScale Postgresがどんな感じになるのかちょっと気になるね。
バックエンドそのものに注目するのも大事だけど、なんでみんなデータベースとやり取りするクライアント側に目を向けないんだろう?パフォーマンスに関しては、アプリケーションの課題のほとんどがそこから始まっているのに。
要約すると?これを使ってk8s上の自分のCNPGをベンチマークして、デプロイメントの改善余地があるか確認することはできるかな?
ちょうどこういうのを探してたんだ。クラウドごとのPostgresインスタンスを比較したベンチマークって不足してると思う。どこも大体同じ機能を同じような価格で提供してるけど、実際のパフォーマンスがどうなのかはよく分からないからさ。
もし無駄にしてもいい1万ドルくらいあったら、Claude CodeにAWSアカウントとこのベンチマークを渡して、設定をいろいろ変えながらトランザクション処理に最適なパラメータ空間を自動で探させるんだけどな。
VPSで動かす素のPostgresと、ベアメタルサーバー上の素のPostgresも比較対象に入れてくれると面白いんだけどな。比べ物にならないのは分かってるけど、どれくらい遅いのか、あるいは速いのか、その差がどれくらいなのか知りたい。
個人的な意見だけど:
各実行は10分間続き、ウォームアップを経て安定したスループットを計測するのに十分な長さ
いや、チェックポイントの影響(かなり顕著だよ)を見るには短すぎる。現実的なワークロードを反映していないよ。少なくともcheckpoint_timeout=5minsで30分は回して、最低でも6回のチェックポイントサイクルを含めるべきだね。
平均TPS、平均レイテンシ、P95レイテンシ、P99レイテンシを報告する
見落としていなければ、平均TPSしか報告されていないよね。時間経過によるTPSの変化がない。繰り返しになるけど、チェックポイントの影響でかなり変動するから、パターンを理解してSLAを判断するには時間軸での変化が必要だよ。
2つのスケールファクター(6849:約100GB、34247:約500GB)をテストした
桁を一つ開ける(100GBと1TB)のがいいと思う。今どき1TB超えは珍しくないし、スケーリングパスのステップとして比較すべきだよ。
すべてのサービスは高可用性を提供するが、基盤のアーキテクチャが異なる。スタンバイレプリケーションを使うものや、共有・分散ストレージ層を使うものもある。今回は単一ノードのコンピューティングとストレージ性能に焦点を当てているため、HAを無効にして分離した
だから、それだと現実的じゃないんだよ。本番環境でのHAの影響は無視できないレベルで、特にセミ同期(semi-sync)を使っている場合は顕著だ。
それより重要なのは、すでに冗長化されて高可用性を持つシステム(例えばAuroraは6つのデータコピーを書き込む)と、(見落としていなければ)エフェメラルなローカルNVMeに書き込む単一インスタンスを比較している点だよ。これはスイカとブドウを比べるようなものだ。
Postgresのデフォルト設定
これは間違いだと思う。Postgresは(最低限度でも)チューニングして、テスト対象のシステム間で設定をある程度揃えるべきだ。そうしないとPostgresのベンチマークではなく、マネージドサービスのデフォルト設定を決めた人の保守性を測っているだけになってしまう。
価格は比較していない
一番面白いところを飛ばすのかい?
含まれるシステム
比較用に自己管理型のEC2クラスター(ローカルNVMe使用)がないのが残念だね。
いいプロジェクトだけど、オープンソースコミュニティにはまだあんまり浸透してないみたいだね。5月から公開されてるのにGitHubのスターもコントリビューターもそんなに多くないし。