簡體   English   中英

oracle中的可序列化隔離級別

[英]Serializable isolation level in oracle

根據這個明確的可序列化隔離級別執行讀鎖定以及行上的范圍鎖定。 因此,如果在一個事務中我對某些行(或行)執行SELECT語句,那么將嘗試查詢相同行(或該行的子集)的另一個事務將鎖定,直到第一個進行提交或回滾。 對? 但是在oracle中我試圖執行這樣的場景並且第二次交易沒有被鎖定。 為什么在我在第一次交易中執行提交之前它沒有鎖定?

Oracle采用多版本保護來保證讀取性能而不會阻止寫入:

讀一致查詢

查詢返回的數據已提交,並且與單個時間點保持一致。

非阻止查詢

數據的讀者和編寫者不會互相阻塞

在Read-Committed隔離中執行SELECT時,數據庫會按照查詢開頭處的行重建這些行,以便您具有一致的數據視圖(在同一時間點檢索所有塊)。 Oracle使用撤消數據來反轉查詢開始對塊所做的更改(也包括其他未提交事務的更改)。

原則與可序列化事務隔離相同,除了Oracle在事務開始時重建行。

為了進一步閱讀,我建議你看一下Tom Kyte的書中的“ 多版本和並發 ”一章。

Oracle不接受讀鎖定。 他們有CR機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM