PostgreSQLデータベースの適切なパフォーマンス・チューニングを実施する上で、搭載しているCPUやメモリー量、ストレージタイプ、使用しているOS、利用用途に応じて様々なチューニングが必要になってきます。多くの検討項目がありますが、そのような手間を一気に解消してくれる無料で使える「PGTune」というツールが必要に便利です。
このツールを使ってチューニングすることで、必要最低限のパフォーマンス・チューニングを実施することができます。PostgreSQLのバージョンによって使えるパラメータや設定が異なるのですが、このPGTuneを使うことであまりデータベース・バージョン毎の違いを意識することなくデータベースのパフォーマンス・チューニングを実施できます。
PGTuneへのアクセス方法
PGTuneツールは、ウェブ上で利用できますのでインストールする必要はありませんので非常に手軽に使えます。ウェブブラウザで https://pgtune.leopard.in.ua にアクセスすればすぐに利用を開始することが出来ます。
PGTuneのウェブサイトにアクセスすると次のような画面が表示されます。

PGTuneの使い方
PGTuneの使い方ですが、基本的にPostgreSQLデータベースが稼働するサーバーのハードウェア仕様を入力していき、またデータベースの用途を選択することで適切なデータベースのメモリー量や各種設定値の最適な値を提示してくれます。
DB version | PostgreSQLデータベースのバージョンを選択します。 2024年12月時点では、PostgreSQLバージョン10、11、12、13、14、15、16、17まで対応しています。 |
OS Type | PostgreSQLデータベースが稼働するOSを選択します。 Linux、OS X、Windowsのいずれかを選択します。 |
DB Type | データベースの用途を選択します。用途に応じて以下のいずれかから選択します。 ・Web application ・Online transaction processing system ・Data warehouse ・Desktop application ・Mixed type of application |
Total Memory (RAM) | サーバーに搭載しているメモリー量を設定します。GB、MBの単位のどちらかで設定します。16GBメモリーを搭載している場合、16と入力し、GBを選択しましょう。 |
Number of CPUs | サーバーに搭載しているCPU数を設定します。 |
Number of Connections | データベースに接続してくるクライアント接続数の最大値を設定します。もし500接続であれば、500と入力しましょう。 |
Data Storage | サーバーに搭載しているディスクの種類を選択します。以下の中から選択します。 SSD Storage Network (SAN) storage HDD storage |
“DB Type”の設定について
“DB Type”では、次の表に従って目的や用途によって選択するとよいでしょう。
Web Application (web) | Webアプリケーション向けのデータベースで、主にCPUに負荷がかかり、データベースのサイズがメモリー量よりも小さい場合、かつ90%以上のクエリーが単純なものである場合に選択するとよいでしょう。 |
Online Transaction Processing (oltp) | 多数のトランザクションを同時に実行するシステム向けのデータベースで、例えばオンラインバンキングやオンラインショッピングシステムなどで使われるデータベースです。CPU又はディスクI/O負荷が高く、データベースのサイズはメモリー量よりも多く1TBよりも小さい場合で、20%~40%は小さな書き込み処理を行い、その他は重いクエリーやデータ読み取り処理となっているシステム向けです。 |
Data Warehouse (dw) | データウェアハウス向けのデータベースで、ビジネス・インテリジェンスとも呼ばれるデータベース向けです。ディスクI/Oとメモリー処理が重いデータベース向けです。大きなデータをロードしたり、思いレポート向けクエリーを実行したりするデータベース向けです。 |
Desktop application | デスクトップアプリケーション向けのデータベースです。専用データベースではなく、一般的なパソコン上で動作する場合で、例えば開発者が自分で開発向けに使う小規模なデータベースの場合です。 |
Mixed type of application | 混合アプリケーション向けデータベースです。データウェアハウス向けでもあり、オンライントランザクション向けであったり、様々な用途に利用するデータベース向けです。 |
PGtuneを使ってチューニングする方法
ここでは実際にPostgreSQL-17データベースをチューニングする例を記載します。PostgreSQLのバージョンは17、OSはLinux、データベースのタイプ(DB Type)は「Mixed type of application」、搭載メモリー量は16GB、搭載しているCPUは8個、同時接続数は500、搭載しているディスク種別はSSDとしています。

必要項目を選択・入力したら画面下部の「Generate」ボタンを押します。すると画面右側に最適と思われるデータベース・パラメータが表示されます。この設定値をコピーしてpostgresql.confファイルの該当する値を書き換えます。postgresql.confファイルを書き換えたら、PostgreSQLデータベースを再起動することで設定したパラメータが反映されます。
また、画面右上の「ALTER SYSTEM」というタブをクリックすると、postgresql.confを書き換えなくてもデータベースパラメータを変更できる「ALTER SYSTEM」文を表示してくれますので、これをコピーして実行してもデータベースの設定を書き換えることが出来ます。

まとめ
PGTuneツールを使うことにより、PostgreSQLのパラメータを手作業で計算しなくても自動でチューニングに必要なパラメータを計算して出力してくれます。私も実際に表示されたパラメータを使って本番データベースを設定していますが、データベースの性能が非常に良くなりました。PGTuneを使ってデータベース性能を上げてみましょう。