とある環境で
pgpool→postgresql×2のネイティブレプリケーション構成で
pgpool_catalog.insert_lockテーブルを作成しInsert文に対しては、
行ロックをかけているのですが、
動作についていまいち理解ができていません。
以下マニュアルページには
≪http://www.pgpool.net/docs/latest/ja/html/runtime-config-runnung-mode.html≫
【VACUUM(autovacuumを含む)とのロック競合を最小化することを意図しています。】
と記載があるのですが、
確かに、行ロック時のSELECT FOR UPDATE文のLOCK形式はRowShareLock、
VACUUM (FULLなし)のLOCK形式はShareUpdateExclusiveLockとお互い競合しません。
しかし、そもそもinsert文のLOCK形式はRowExclusiveLockとなっておりVACUUM (FULLなし)と競合しません。
となると、先述した【VACUUM(autovacuumを含む)とのロック競合を最小化することを意図しています。】はどうゆうこと?となり、行ロック形式にする意味がないように見受けられます。
大変お手数ですが、上記の件、
pgpool_catalog.insert_lockテーブルを作成し行ロックをかけることで、
VACUUM(autovacuumを含む)とのロック競合を最小化することが出来る。
と言うところ「その通りだよ」とだれか私に詳しく教えて頂けないでしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/16 07:30 編集