Re: Transaction isolation level
河野真治 @ 琉球大学情報工学です。
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,
河野真治 @ 琉球大学工学部情報工学科,
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735