簡析每個隔離級別下共享鎖持續(xù)時長

鎖:多并發(fā)排他訪問的時候產(chǎn)生,

所以鎖和事務(wù)特性中的隔離性關(guān)系密切.


四種隔離級別:

讀未提交

讀已提交

可重復(fù)讀

可序列化

排他鎖:為了保證事務(wù)的完整一致, 排他鎖都是持續(xù)到事務(wù)結(jié)束的..

共享鎖加鎖機制

讀未提交:

顧名思義,別人沒有提交我能讀,哪我讀取的時候不加共享鎖唄,

讀臟(脹數(shù)據(jù)是既沒有提交也沒有回滾的數(shù)據(jù),中間狀態(tài)數(shù)據(jù)頁是在內(nèi)存中還沒有redo到磁盤的數(shù)據(jù),

當(dāng)checkpoint被觸發(fā)時會批量寫入磁盤,然后在頁頭標(biāo)記為干凈).

讀已提交:

顧名思義,別人提交了我才能讀,那么我讀取的時候是加共享鎖的,

但是共享鎖是讀取一條釋放一條,這個鎖不會持續(xù)到事務(wù)結(jié)束.

可重復(fù)讀:

顧名思義,可以重復(fù)讀取嗎,

既然在一個事務(wù)內(nèi)我可以重復(fù)讀取,其實意識就是在一個事務(wù)內(nèi)多少此都一致,

那么這個共享鎖是持續(xù)到事務(wù)結(jié)束..從start--commit 這段時間內(nèi)共享鎖一直持有,

所以其他人修改不掉,才會多次讀取一致。

可序列化:

如一張表主鍵id 1,2,3 3條數(shù)據(jù)我想在2-3之間插入一個2.5,

如果現(xiàn)在有人查詢select count(1) from tbname where id>=1 and id<=3時,

是不允許的,因為這個隔離級別上的是范圍鎖這段時間不但數(shù)據(jù)不能修改, 這一段范圍也不能插入新的數(shù)據(jù)..

所以一個事務(wù)內(nèi)count多少次都是3條數(shù)據(jù), 如果這個表沒有主鍵,沒有聚集建怎么上范圍所, 堆表無邏輯概念 ,

存放的就是物理位置 fileid:pageid:slotnumber ,如果堆表這個隔離級別讀取的時候就會加表鎖.


以上概述只限SQLSERVER 數(shù)據(jù)庫, mysql,postgresql采取的是樂觀并發(fā), 默認(rèn)讀老版本數(shù)據(jù)。

所以他的讀已提交默認(rèn)讀取的是行的老版本、

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 我們都知道事務(wù)的幾種性質(zhì),數(shù)據(jù)庫為了維護這些性質(zhì),尤其是一致性和隔離性,一般使用加鎖這種方式。同時數(shù)據(jù)庫又是個高并...
    CodeKing2017閱讀 711評論 0 7
  • 當(dāng)一個系統(tǒng)訪問量上來的時候,不只是數(shù)據(jù)庫性能瓶頸問題了,數(shù)據(jù)庫數(shù)據(jù)安全也會浮現(xiàn),這時候合理使用數(shù)據(jù)庫鎖機制就顯得異...
    初來的雨天閱讀 3,695評論 0 22
  • 一、事務(wù) 1、事務(wù)四要素:ACID 對于事務(wù),我之前的理解是很粗糙的,不就是為了保證操作的原子性么?一般訂單系統(tǒng)或...
    張偉科閱讀 1,508評論 0 5
  • 您的時間已不足?。?!您的時間已不足?。?!您的時間已不足!?。≈匾氖虑檎f三遍?。?!馬上就要2018年了,您,做好...
    凜翊閱讀 98評論 0 0
  • 從夢中醒來 忽聽陣陣雨聲 喜歡雨 溫柔了時光 對岸的燈火在雨里搖曳 伴隨閃過天際的霞光 夜雨四月 恰似你的到來...
    z云淡風(fēng)輕閱讀 232評論 1 0

友情鏈接更多精彩內(nèi)容