[pgsql-jp: 26644] Re: 会員登録の重複

Tatsuo Ishii t-ishii @ sra.co.jp
2002年 7月 10日 (水) 13:03:25 JST


石井です.

> 会員テーブルにinsertする前に、POSTされたemailと会員テーブルemailの
> 重複チェックを行っているので、複数回POSTされても2回目以降はエラーで
> 登録できないようになっています。
> 
> 考えられるのは、
> 1.複数回POSTされたが、何らかの要因で直前のPOSTでの登録データが
>  hitしなかった。
> 
> 2.POSTは1回しか行われていないが、何らかの要因で複数回のinsertが
>  実行された。
> 
> の2つのケースかと思います。
> かなりタイトなアクセスのあるサイトなので、動作時に何か特殊なことが
> 起きているのでは?と危惧しています。
> 
> 1.はfsyncとか、関係するのでしょうか??
> 2.なんて事は、有り得るのでしょうか?

全部あり得ません.

> よしたけ@YYNさんのトランザクション処理も、確かに有効な気がします。
> テストはむずかしいですが、とりあえずトランザクション処理を実装して
> 様子を見ようと思います。

トランザクション+ロックをしていなければ,問題になっている現象が起きて
も全然不思議ではないです.ようするに障害の原因はトランザクション設計が
できていないというか,アプリケーションのバグということになりますね.

ちなみに,

> > lock table 会員テーブル EXCLUSIVE MODE;

までは必要ないと思います.今回のような目的のためには,

lock table 会員テーブル IN SHARE EXCLUSIVE MODE;

で十分だと思います.
--
Tatsuo Ishii



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