patorashのブログ

方向性はまだない

HerokuのpostgresqlのvCPUについて調べた

最近、ようやく[改定新版]内部構造から学ぶPostgreSQLを読み終えた。

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

いわずもがな、めっちゃいい本だと思います!この本はSQLの書き方とかは全く載っていなくて、設計・運用のノウハウがめっちゃ詰まっています。レプリケーションやパフォーマンスチューニング、Explainの見方や、ここ最近加わった機能の紹介などが載っています。

PostgreSQLは9.6からパラレルクエリが使えるようになっていて、並列で問い合わせの処理が行えるようになりました。その説明や、実際にどれくらい速くなるかの実験結果も載っていました。それによると、4CPUで4並列でクエリを処理した結果、速度はおおよそ3倍速くなっていました。4並列で処理するといっても、その分割処理などが入るため、素直に4倍速くなるわけではありません。

私が担当しているプロジェクトや、チーム内の他のプロジェクトでもPostgreSQLを使っているので、この情報は社内のチャットでも情報共有しておきました。また、担当プロジェクトで現在利用しているPostgreSQLバージョンは、まだ9.5のため、パラレルクエリが使えません。

実際に変更したら速くなるのか?を調査するにしても、利用環境のCPUの数がシングルコアだとバージョンアップでの高速化はそこまで見込めないのかな?と思ったので、とりあえず調べたところ、HerokuのPostgreSQLのCPUコア数が公開されてました。

devcenter.heroku.com

standard-0以上であれば、vCPUは2以上あるので、パラレルクエリでの高速化は見込めそうかなと思います。

PostgreSQLバージョンアップだけで高速化が期待できるのは嬉しい! 引き続き検証してバージョンアップをしていく次第。

また結果とかも書いていこうかなと思います。