はじめに
PowerGres Plusは、インストールとセットアップまでの環境設定を、GUIツールを利用して簡単に操作できます。また、自動的にチューニングが行われ、最適な状態のデータベース環境を構築することができるため、そのままで問題なく使うことができます。
インターネットを参照していると、いろいろなソフトウェアの性能を良くするための情報があふれています。商用データベースについても、インターネットだけでなく、書籍でも性能チューニングのポイントが紹介されています。
PowerGres Plusも、メモリの利用、ディスクの配置などの設定を工夫することで、それまで以上の性能を引き出すことができます。
このシリーズでは、すでにPowerGres Plusをお使いのエンジニアの方々、または、これからPowerGres Plusによるシステムの構築を検討しているエンジニアの方々に向け、性能チューニングのポイントを紹介します。
PowerGres Plusでは、Setupツール、Administratorツールにより、以下のようにリソースをディスク3本に配置します。リソースの配置はGUIの操作で簡単に行えます。
図1: PowerGres Plusのリソースの配置
実際にPostgreSQLに標準添付されている、ベンチマークツールのpgbenchで性能を測定してみました。
図2は、ディスク2本と3本の、性能測定結果です。
ディスク3本の方が良い結果となります。ディスクを2本にしてしまうと、ディスク3本より性能は低くなります。
図2: ディスク2本と3本の性能結果
TPS:1秒間に実行できたトランザクション数。この数値が大きいほど処理能力が高い(性能がよい)ということになります。
ディスクの配置を変更することで、性能がどのように向上するか紹介します。
PowerGres Plusでは、システムに異常が発生したときでも、データを適切な状態に保つために、トランザクションが更新した状態を一時ログとして記録しています。この一時ログは、インスタンスを格納するディレクトリにあります。
アプリケーションから、データベースへの更新が発生すると、データベースへの読み書きと同時に、一時ログへの状態の保存が行われます。
ディスク2本の場合は、データベースと一時ログを1つのディスクに配置しています。データを更新すると、データベースからの読み出し処理と一時ログへの書き込み処理が1つのディスクに対して行われます。
ディスク3本の場合は、データを更新すると、データベースからの読み出し処理と一時ログへの書き込み処理が発生しますが、ディスクを分けたことにより、ディスク2本の場合と比べ、I/O効率が高まり、データベースの処理性能が向上します。
図3: ディスク配置による性能の仕組み
図4は、ディスク2本、3本でデータの更新の割合を変更した性能結果です。今回の測定モデルでは、更新の割合が増えても常にディスク3本の方が良い結果となりました。測定方法の詳細は、このページの最後の参考を参照してください。
図4: 更新の割合を変更した場合の性能
3本のディスクで運用することにより、I/O効率が高まり性能が向上します。しかし、ディスクを2本にしたり、RAIDカードを使用して複数のディスクをまとめるとI/O効率が3本のときより低くなってしまいます。
最近では、ハードウェアの価格も安くなり、低価格で、高性能、大容量のハードディスクを購入することができます。
この機会に、システムに最適なディスクの構成を検討し、パフォーマンスの向上を実現してください。
ログを格納する「インスタンスディレクトリ」と、データベースを格納する「データベーススペース」のディスク配置を変更し、データベース性能をpgbench(※)で測定しました。なお、「バックアップディレクトリ」は、独立したディスクとして配置しました。
※pgbenchは、PostgreSQLに添付されている標準ベンチマークツールです。
pgbench は select/update/insert を含むトランザクションを実行し、全体の実行時間と完了したトランザクションの数から、TPSを表示します。
詳細は、PostgreSQLのcontrib/pgbenchのREADMEを参照してください。
pgbenchの指定値は以下の通りです。
測定環境
OS RedHat Enterprise Linux ES(V3.0 for x86)
CPU Pentium Xeon 1.8GHz×1個
メモリ 1GB
PowerGres Plus V2.0
データベーススペースサイズ 2.5GB
アーカイブログファイルサイズ 3.0GB