走り続けたい社内SEブログ

走り続ける(ようにがんばっている)社内SEの独り言です。

PostgreSQL9.0のレプリケーション機能のパフォーマンスについて

2011-08-21 21:35:58 | 開発
以前から使ってみたいなぁと思っていたPostgreSQL9.0(以下,Postgres)のレプリケーション機能を試してみました。
実際にPostgresのレプリケーション環境を作り、測定してみます。

ちなみにこのテストのポイントは、プライマリ側の性能劣化が発生するかどうかです。
レプリケーション機能を使う場合のその傾向を確認し、実際に(私の環境で)導入できるか確認したいと思っています。

Postgresのレプリケーションは非同期でWALで行われるため、回線の帯域やスタンバイ側の負荷により遅延が発生しても、追っかけ更新で対応してくれると思っていますが、これが正しい考えかどうかを追々試していきたいと思います(もちろん設定にもよりますが)。

今回、試してみたのは、
「プライマリ側に10万件のinsert文を発行し、レプリケーション有無で実行時間を比較してみる」
というものです。
実際には、レプリケーションを有効・無効でそれぞれ5回実行し、その平均値を比較します。

結果は、
レプリケーションなし:4:09
レプリケーションあり:4:13
とあまり差がありませんでした。

今回は、(本番を想定した)負荷をかけたりしなかったため、問題なかっただけかもしれませんが、10万件のinsertでこれだけの差なら問題ない(誤差)でしょう。

今後は、負荷をかけながらテストしてみたいと思います。
また、今回使用した環境を参考程度に記載しておきます。
今後負荷をかけることを想定して、スタンバイ側を非力にしています。

<環境>

プライマリ側:
OS: CentOS5.6
CPU: Pentium4_3GHz, MEM: 1024MB, HDD: 7200rpm ※VMWare Server 1.0のゲストOS環境

スタンバイ側:
OS: CentOS4.6
CPU: C3_800MHz, MEM: 768MB, HDD: 4200rpm