[pgpool-general-jp: 156] Re: pgpoolでのupdateについて

Yoshiyuki Asaba y-asaba @ sraoss.co.jp
2007年 6月 4日 (月) 11:21:31 JST


浅羽です。

From: "Mizuno Shinya" <098.mizuno.shinya @ gmail.com>
Subject: [pgpool-general-jp: 155] Re: pgpoolでのupdateについて
Date: Mon, 4 Jun 2007 11:01:24 +0900

> >> A) update table1 set value=100 where id=1
> >> B) update table1 set value=200 where id=1
> >>
> >> この二つのクエリが別トランザクションで同時に実行された場合、
> >> 最終的に「value」の値はどのようになるのでしょうか。
> >
> > マスタで先に行ロックを獲得したトランザクションが先に UPDATE
> > を実行します。これは replication_strict = true の場合のみです。
> 
> 行ロックが必要と言うことですね。了解いたしました。
> この行ロックはWEBアプリ側から明示的に指定をする必要がありま
> すでしょうか。
> それとも、「insert_lock=true」としたときのように、pgpoolが自
> 動で対応してくださるのでしょうか。

いえ、PostgreSQL では UPDATE や DELETE をする際に暗黙的に行ロックを獲
得するようになっています。

例えば、

  A) BEGIN;
  A) update table1 set value=100 where id=1
  B) BEGIN;
  B) update table1 set value=200 where id=1

を実行すると、B は行ロック獲得待ちになります。
--
Yoshiyuki Asaba
y-asaba @ sraoss.co.jp


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