MySQL框架之事務的隔離級別

2021-09-11 01:40:42 字數 1066 閱讀 4906

在sql標準中定義了四中隔離級別,每一種級別都規定了乙個事務中所做的修改,哪些在事務內和事務間是可見的,哪些是不可見的。較低階別的隔離通常可以執行更高的併發,系統的開銷也更低。

read uncommitted級別,事務中的修改,即使沒有提交,對其他事務也都是可見的。事務可以讀取未提交的資料,這也被稱為髒讀read uncommitted一般在實際應用中很好使用。

大多數資料庫系統的預設隔離級別是read committed(但mysql不是)。read committed滿足隔離性的簡單定義:乙個事務開始時,只能看見已經提交的事務所做的修改。換句話說,乙個事務從開始直到提交之前,所做的任何修改對其他事務都是不可見的,這個級別的也叫不可重複讀,因為兩次執行同樣的查詢,可能得到不一樣的結果。

repeatable read解決了髒讀的問題。該級別保證了在同乙個事務當中多次讀取同樣記錄的結果是一致的。但是理論上,可重複讀隔離級別還是無法解決另外乙個幻讀的問題。幻讀指的是當某個事務在讀取某個範圍內的記錄時,另外乙個事務又在該範圍插入了新的記錄,當之前的的事務再次讀取該範圍的記錄時,會產生幻行。

可重複讀是mysql的預設事務隔離級別。

serializable是最高的隔離級別。它通過強制事務序列執行,避免了歡度的問題。簡單的來說,serializable會在讀取的每一行資料上都加鎖,所以可能導致大量的超時和鎖爭用的問題。

anis sql隔離級別

隔離級別

髒讀可能性

不可重複讀可能性

幻讀可能性

加鎖讀read uncommitted

noyes

yesno

read committed

noyes

yesyes

repeatable read

nono

yesno

serializable

nono

noyes

mysql隔離級別 MySQL 事務隔離級別

mysql innodb所提供的事務滿足acid的要求,事務是通過事務日誌中的redo log和undo log來實現原子性 undo log 一致性 undo log 永續性 redo log 事務通過鎖機制實現隔離性。1 事務隔離級別與實現read uncommitted 讀未提交 read c...

資料庫之事務的隔離級別

iso 和 anis sql 標準制定了四種事務隔離級別,而 innodb 遵循了 sql 1992 標準中的四種隔離級別 read uncommited 使用查詢語句不會加鎖,可能會讀到未提交的行 dirty read read commited 只對記錄加記錄鎖,而不會再記錄之間加間隙鎖,所以允...

mysql事務隔離級別詳解 事務的隔離級別詳解

事務的隔離級別 在資料庫操作中,為了有效保證併發讀取資料的正確性,提出的事務隔離級別。問題的提出 資料庫是要被廣大客戶所共享訪問的,那麼在資料庫操作過程中很可能出現以下幾種不確定情況。更新丟失 兩個事務都同時更新一行資料,乙個事務對資料的更新把另乙個事務對資料的更新覆蓋了。這是因為系統沒有執行任何的...