河野真治 @ 琉球大学情報工学です。

In article <bq10bl$1j9$1@news-wst.ocn.ad.jp>, Tanaka-Qtaro-Yasuhiro <tanaq@ca2.so-net.ne.jp> writes
> 最近、データベースのトランザクション処理について、いろいろ考え
> る機会があったのですが、自分自身かなりあやふやにしか理解できて
> ないことがわかり、勉強しなおしたいと思っています。

その「いろいろ考えた」ことが聞きたいなぁ...

> 例えば、ある isolationレベルのトランザクションで、複数行を順繰り
> に削除する処理と更新する処理が同時に走ったときに、テーブルにロッ
> クをかける必要があるのかどうか」といった問題を、きちんと解ける
> 力をつけたいのです。

トランザクションってのは、データベースへの処理の集合で、それを
単位に、逐次に実行したのと同じなって欲しいものですよね。

で、普通に、レコードを 2 phase lock してやって、dead lock を
避けるために、複数のlockをかける時は、順序を全部同じにするよ
うに心がけて... ぐらいでいいんじゃないですか? (僕の理解はそ
の程度...) 

ロックの単位をテーブルにするかレコードにするか、あるいは、述
語にするかを一般的に選択する基準は、僕は知りません。そんなも
のはないのだと思います。

> データベースのトランザクション隔離レベルについて、わかりやすく
> 説明された書籍やウェブページは無いでしょうか。
> 「低い隔離レベルだとこういう処理がうまくいかない」といった例が
> 豊富だと嬉しいです。

Date の Database System Concepts とかが教科書だけど...

そういえば、ジム・グレイの「トランザクション処理」も出てたな。
最初にトランザクションを勉強したのは、ジム・グレイのなんかの
レポートでした。

---
Shinji KONO @ Information Engineering, University of the Ryukyus, 
河野真治 @ 琉球大学工学部情報工学科,