事物隔離的四個級別

2021-10-02 13:01:39 字數 613 閱讀 9271

隔離級別

內容特點

read uncommited

讀未提交

向資料庫中插入了乙個值, 此時並沒有提交, 但是資料庫中已經看到這個值 例如: 向資料庫update值 101, 此時發現提交錯誤,查詢時發現值已經變成101, 事物回滾後重新插入100 並提交,此時再查資料庫值已經變成100, 讀未提交容易觸發髒讀

read commited

讀提交若有事務對資料進行更新(update)操作時,讀操作事務要等待這個更新操作事務提交後才能讀取資料,可以解決髒讀問題。但在這個事例中,出現了乙個事務範圍內兩個相同的查詢卻返回了不同資料,這就是不可重複讀。

repeated read

重複讀重複讀可以解決不可重複讀問題。這裡,應該明白的一點就是,不可重複讀對應的是修改,即update操作。但是可能還會有幻讀問題。因為幻讀問題對應的是插入insert操作,而不是update操作, 重複讀仍然不能解決幻讀問題

serializable

序列化serializable 是最高的事務隔離級別,在該級別下,事務序列化順序執行,可以避免髒讀、不可重複讀與幻讀。但是這種事務隔離級別效率低下,比較耗資料庫效能,一般不使用。

原文參考:

事物的四個特性和四個隔離級別

事物是一條或者多條sql語句組成的執行序列,這個序列中的所有語句都屬於同乙個工作單元,要麼同時完成,其中如果有乙個失敗,則其他操作都要回滾。事物是乙個不可分割的資料庫邏輯工作單位,要麼全部完成,要不失敗回滾。事務執行的結果必須使資料庫從乙個一致性狀態變到另乙個一致性狀態。乙個事物的執行不能被別的併發...

事物的四個特性和隔離級別

一 什麼是事務 事務是應用程式中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。也就是事務具有原子性,乙個事務中的一系列的操作要麼全部成功,要麼乙個都不做。事務的結束有兩種,當事務中的所以步驟全部成功執行時,事務提交。如果其中乙個步驟失敗,將發生回滾操作,撤消撤消之...

MySQL ACID與四個隔離級別

在資料讀寫過程中,可能發生 read uncommitted 可能髒讀 幻讀 不可重複讀 事務覆蓋造成更新丟失。排它鎖,只有乙個寫 read committed 寫事務不允許其他事務訪問資料。避免髒讀。repeatable read 讀取事務禁止寫事務,寫事務禁止任何其他事務 避免髒讀和不可重複讀s...