資料讀一致性

2021-04-22 17:12:43 字數 743 閱讀 7342

undo段由兩個元件組成:undo頭和undo入口。undo段的第一塊是undo頭。undo被建立時僅有undo頭被建立。

保留時間表(retention table):這是自動管理undo新增的乙個元件。儲存了undo段中每乙個區最後乙個事務提交的時間。

事務表(transaction table):儲存在undo頭中。由若干槽位(slot)和入口(entries)組成。

undo入口:儲存了事務級別和列前象的資訊。每乙個事務對應乙個由undo入口組成的回滾鏈式結構。

讀一致性步驟:

讀資料塊,如果記憶體中有這個塊把這個塊放到undo段中。

讀行頭資訊。

通過檢查itl入口的鎖狀態位來判斷是否有事務入口。

通過讀itl來發現事務的id。

讀事務表。如果事務已提交並且系統提交號比查詢改變號小,從undo段中清除資料塊,讀下一塊。

讀到最後乙個undo塊

對比事務表中和最後乙個undo塊的事務id。如果這兩個事務id不相等則報ora-1555錯誤。

從第乙個事務入口開始更改資料塊。

如果最後乙個undo入口中儲存的是另乙個資料塊的位址,將undo塊讀到記憶體中。重複7,8步,直到不包含資料塊的值的位址。

如果沒有前乙個資料塊的位址,則事務回滾。

如果undo入口包含:

乙個指向前乙個事務undo塊位址的指標,讀這個事務undo塊頭的事務id和事務表入口,返回到5步。

有乙個itl記錄,儲存itl記錄到資料塊,返回步4。 

一致性非鎖定讀和一致性鎖定讀

在預設配置下innodb的隔離級別是repeatable read,innodb的select操作使用的是一致性非鎖定讀 一致性的非鎖定行讀 consistent nonlocking read,簡稱cnr 是指innodb儲存引擎通過行多版本控制 multi versioning 的方式來讀取當前...

一致性非鎖定讀與一致性鎖定讀

一致性非鎖定讀 consistent nonlocking read 是指innodb儲存引擎通過 行多版本控制 multi versioning 的方式來讀取當前執行時間資料庫中行的資料。如果讀取的行正在執行delete或update操作,這時讀取操作不會因此去等待行上鎖的釋放,相反地,innod...

強一致性 弱一致性 最終一致性

這種方式在es等分布式系統中也有體現,可以設定主shard提交即返回成功,或者需要replica shard提交成功再返回。提到分布式架構就一定繞不開 一致性 問題,而 一致性 其實又包含了資料一致性和事務一致性兩種情況,本文主要討論資料一致性 事務一致性指acid 複製是導致出現資料一致性問題的唯...