資料庫隔離級別

2021-09-25 17:28:14 字數 1257 閱讀 7407

資料庫事務的特性:acid:原子性,一致性,隔離性,永續性。

原子性:事務的操作是乙個原子性操作,要麼全做,要麼全部做

一致性:執行事務前後,資料保持一致,多個事務對同乙個資料庫讀取的結果是相同的.資料庫從乙個一致性狀態到另乙個一致性狀態

隔離性:多個事務對資料庫進行操作時,保證每個事務之間沒有影響

永續性:修改完資料庫是永久的。

保證acids屬性的方法:(1)併發控制(2)日誌恢復

(1)併發控制:

a.樂觀併發控制(當事務出現問題時才解決:回滾)

b.悲觀併發控制(事務開始時就加鎖、時間戳)。

併發事務帶來的問題:

髒讀:插入了一條語句,但是沒有提交,我再select的時候,卻顯示出來了。

不可重複讀:我在查詢乙個屬性值之後(select * from student where id=『111』),你update了這個屬性值,我由查詢了一次,結構兩次讀的結果不一樣,就是不可重複讀。

幻讀:我查詢了該列表的所有屬性值(select * from student),你又插入或刪除了(insert \ delete)幾個元組,我再查詢的時候,發現列表變了

資料庫隔離級別有四種:未提交,提交,可重複讀,序列化

讀未提交:沒有提交的事務,也能讀到。會出現髒讀、不可重複讀、幻讀

讀提交:只有提交的事務,我才能讀到。可以避免髒讀,但是會出現不可重複讀,幻讀。

可重複讀:當進入查詢狀態時,不允許對資料庫進行update操作。可以避免髒讀、不可重複讀,但是會出現幻讀。

序列化:每條指令按照指定的順序執行,可以避免髒讀,不可重複讀,幻讀。但是代價太大。

鎖:

時間戳:

核心思想:對與併發發生衝突時,按照時間戳的順序選擇一些事務繼續執行,一些事務回滾。

先開始事務的時間戳<後開始事務的時間戳

資料庫事務隔離:當多個事務同時訪問資料庫時,能保證每個事務之間相互沒有影響。

資料庫隔離級別

read uncommited 讀未提交 最低級別,可讀取未提交事物的資料,這會導致髒讀,比如 某時刻會話a修改了乙個資料,但還未提交,此時會話b,讀取了該資料,這是,會話a回滾了事物,這就導致資料出現了不一致狀態,這就是髒讀 read commited 提交讀 避免了髒讀,但會導致不可重複讀,例如...

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀 不可重複讀 幻讀read uncommitted re...

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...