[pgsql-jp: 38546] Re: DB

kenrouse @ gmail.com kenrouse @ gmail.com
2007年 7月 3日 (火) 10:45:58 JST


はじめまして。

まるやまと申します。

僕も、こういった、すでにすごいことになっている
データベースの見直しを行うことがよくあります。

そのときの経験を踏まえ、僕だったらこのように考えます。

> APサーバは2台ありますが、現在、月間のPVが数百万で
> 倍増を目指しています。
> イントラでも利用しています。
>
> DBはトータルすれば10〜数十Gになると思います。
> それをshared_buffers を64Mで運用する。
> 一つの機能で、複数のDBに接続すると、APサーバにも、DBサーバにも
> 相当な負荷を掛けていることになると思います。

・性能の問題について。

データベースサーバーは、どうしてもディスクアクセスが必須ですが、
1台のHDDで、1秒間に書き込める回数は物理的な書き込みヘッドの
シーク速度により、100回程度に制限されています。

このため、DBインスタンスが1個にしろ20個にしろ、
INSERTやUPDATEなどのディスク書き込みが頻繁に起きる場合、
処理が追いつかなくなっているように見えるのではないかと思います。

もちろん、皆さんが指摘しているとおり、DBインスタンスを1つにすることで、
共有メモリやディスクアクセスが一元管理されることで
ある程度性能は向上すると思われますが、やはり書込み操作が
非常に多いことによる性能劣化は避けられないのではないかと思います。

※ただしこれは、OSのライトキャッシュを通さず、
 コミットしたらかならずディスクに書き込まれているという前提です。

> 4時間のバックアップでは不安と言うことです。

既存のアプリケーションをなるべく触らないようにするには、
ほかのみなさんが勧めるとおり、
pgpool という選択肢は非常に有効ではないかと思います。

pgpool はリアルタイムバックアップだけでなく、
ロードバランシング機能も備えているようですので、

可用性だけでなく、性能も向上するかもしれません。


以上、私見ですが、参考になれば幸いです。



pgsql-jp メーリングリストの案内