ロールバック・セグメントに関する検証 その7

~ロールバック・セグメントに関する検証 その7~
ペンネーム ちゃむ

前回は、トランザクション表、ロールバック・セグメントのデータブロック
(undoブロック)、表などのデータ・ブロック中に存在する
ITL(INTERESTED TRANSACTION LIST)の関係に迫ってみた。

今回は、前回の関係を理解した上で、読み取り一貫性に関して深く迫って
みる。SCN(System Change Number)も読み取り一貫性の実現には、欠かす
ことのできない要素である。

<SCN(System Change Number)>
SCNとは、システムにユニークな番号で、変更の度に更新され、その
システムにおけるデータのバージョンを識別するものである。各データ
ブロックには、そのブロックに対して最後に更新が発生した時点でのSCNが
登録されている。読み取り一貫性を保証するときには、このSCNが
利用されている。

<読み取り一貫性>
ロールバック・セグメントのもう1つの役割は、読み取り一貫性の保証である。
ある人が10分程度かかるSELECTを実行したとして、その間に読み込んでいる
テーブルに対する更新が何件も実行された場合、あるデータはSELECT開始時点
の情報、あるデータは更新実行後の情報になってしまっていては、1回のSELECT
であるにもかかわらず、整合性がとれないデータになってしまう恐れがある。
そこで、SELECTが開始された時点でのデータのバージョンを保証し、コミット
前であってもコミット後であっても、データが更新の影響を受けないようにな
っている。これが読み取り一貫性である。

<読み取り一貫性の仕組み(概要)>

以下の画像に、読み取り一貫性の仕組みについての概略を示す。

さらに前回の図を使用して、読み取り一貫性について細かく説明する。

<読み取り一貫性の仕組み(詳細)>

今回は文章は短いが、ここまで。読み取り一貫性の概念をしっかり理解するこ

とで、次回のORA-1555についての検証の内容が理解しやすくなるはずである。

以上 ゴーゴーゴー 茅ヶ崎にて