[pgsql-jp: 33177] Re: PostgreSQL カンファレンスお礼および MySQL のデータが壊れる件

mitani mitani @ sraw.co.jp
2004年 6月 8日 (火) 17:08:53 JST


三谷@広島です.

> > そうでしたっけ?私の理解では,PostgreSQLではロックを取りにいったときに
> > デッドロック検出ルーチンを起動するタイマーをセットし,ロックが取れれば
> > その時点でタイマーをキャンセル,そうでなければタイマーがエキスパイアし
> > てデッドロック検出ルーチンが起動される,というふうになっていて,定期的
> > にチェックルーチンを起動はしていなかったと思うのですが.

デッドロックのチェックは2箇所あって,まず1箇所目は
(1)1箇所目
・ロックを取りに行った時に先ずデッドロックのチェックをする.

で,次に
(2)デッドロックでなければ,アラームでタイマーをセット
(3)セマフォを取りに行く

(4)2箇所目
・セマフォが取れればタイマーを解除する.
・タイムアウトまでにセマフォが取れない場合は,デッドロック検出ルーチンを
呼び出す.
(5)デッドロックでなければ待ちを継続.
で最後に
(6)ステートメント・レベルがタイムアウトであればプロセス終了.
てな感じだと思ってました.

最後にタイムアウトなら終了するので,デッドロックでタイムアウトを見ている
と思っていたのですが,うーん,これは単なるタイムアウトなんでしょうか.

それと1回目のチェックと2回目のチェックは,ソースが異なるのでチェックの
方式が違うのかと思っていましたが,よく見ると同じことをしてますね.

=============================
三谷 篤<mitani @ sraw.co.jp>
=============================





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