質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

2629閲覧

PostgreSQLのレプリケーションによる性能について

mukkun

総合スコア882

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2016/10/31 04:48

PostgreSQLの性能向上を図っていますが、
PostgreSQL9系より標準搭載されているレプリケーション機能を使用したいと考えています。

環境はVMで、クラウドにCentOSのインスタンスを2つ生成し、
それぞれにPostgreSQL9.6をインストールしたいと考えています。

質問内容ですが、
PostgreSQL標準のレプリケーション機能を使用した場合、
1台の時と比較し、性能向上は見込めるでしょうか。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Orlofskyさんの言う通りに容量の削減も必要だと思います。

それに加えて、標準のレプリケーションを使用して行うということなので、
・リクエスト受け取り用のサーバーが1台(pgpoolによる振り分け)
・データベース(レプリケーションのマスター)が1台
・データベース(スレーブ)が必要な数
の3台以上の構成にするのはどうでしょうか?
※インスタンス間の通信(ネットワーク トラフィック)は増えますが、SELECTによるアクセスの分散が行えます。

UPDATE、INSERTはマスターへ、SELECTはマスター、スレーブにて行う構成です。

後は根本的なSQLの見直しでしょうか。。。

投稿2016/10/31 05:35

編集2016/10/31 05:36
himakuma

総合スコア952

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mukkun

2016/10/31 05:38

ご回答ありがとうございます。 すみません。ベストアンサー押した後に気づきました。。 pgpoolも考えたのですが、インスタンス1つ作るのにランニングコストがすごいことになるので、見送りました。 インフラ周りって難しいですね。。 ありがとうございます。
guest

0

ベストアンサー

通常、インスタンス内のアクセスと違ってインスタンス間の通信(ネットワーク トラフィック)が増えるからパフォーマンスは落ちます。可能であればインスタンスを1つにまとめることも考えられますが、データ量に見合うハードウェアは必要ですが。

投稿2016/10/31 04:53

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mukkun

2016/10/31 05:01

ご回答ありがとうございます。 追加で質問があるのですが、よろしければご教授頂けないでしょうか。 Cloud上にて利用しなくてはいけなく、HDDの拡張が最大1TBまでとなっています。 現在600GB程データが格納されており、もう一つインスタンスを作るしかない状態となっています。 また、サービス側でDBに対しInsert、クライアント側でDBに対しSelectが毎分発生し、応答が遅くなっていたりしています。 この状況を打開するいい案などはございますでしょうか。 インフラ周りは素人なものですみません。。 よろしくお願い致します。
Orlofsky

2016/10/31 05:26

現在600GBの容量が1TBになるまでの時間的余裕はどのくらいの期間でしょうか? Cloud側のサービスでディスク容量を増やせないか?サービスの改善を要望する。別の容量が多いCloudに移行することも考慮。 使っていないテーブルのdrop。機能的に困らない範囲でデータの保存期間を短くします。たとえば5年保存する期間を4年にするとか。ディスク容量の無駄は徹底的に排除します。 インスタンスを分割する場合でもネットワーク トラフィックが少ないように分けます。 両方のインスタンスで持つデータはMATERIALIZED VIEWを使ってネットワーク トラフィックを減らすこともよくあります。 https://www.postgresql.jp/document/9.5/html/rules-materializedviews.html パフォーマンスチューニングについては http://qiita.com/cuzic/items/f9b846e6171a54079d77 などを参考にしてください。 あとPostgreSQLのライセンスも複数必要になるでしょうから、予算確保を忘れずに。
mukkun

2016/10/31 05:35

ご回答ありがとうございます。 ・Cloud側ですが社内ツールであり、Cloudの移行等も禁じられている為、不可となっています。AWSに変えたいのですが。。 ・HDD容量の精査、チューニングについては実施済みとなっています。 ・マテリアライズドビューは本末転倒状態となってしまう為、見送らさせて頂きます。 お付き合い頂き有難うございます。 やはりDB側はどうしようもなさそうですね。。 それが知れただけでも感謝です。 他の打開案を練ってみます。有難うございました。
Orlofsky

2016/10/31 08:59 編集

差支えない範囲で社内ツールの制約について改善方法がないか質問すると名案が付くかもしれません。 DWHで3割の容量を削減したこともあります。 わたしは別案件の対応をしていたので自分で直接作業しませんでしたが、マテリアライズドビューが使えないだったか?のケースでは片方向(更新する元になるテーブルが1つだけ)のマテリアライズドビューの対象になるテーブルにトリガーを設定して insert, update, delete 情報を別テーブルに保存して、定期的(何秒毎とか何時間毎にリフレッシュに相当)に別テーブルの内容をレプリカ側のテーブルに反映するようにしては?って提案したことがあります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問