怎麼理解SQL的四個事務隔離級別?
1、髒讀
出現原因:一個事務讀取到了快取中另一個事務未提交的髒資料。
說明:當事務B對data進行了修改但是未提交事務,此時事務A對data進行讀取,並使用事務B修改的資料做業務處理。
2、幻讀( 虛讀 )
出現原因:一個事務在讀取資料時,另一個事務插入了資料,導致上個事務第二次讀取資料時,資料不一致。
說明:data 表有一條資料,事務A對data進行讀取, 事務B對data進行資料新增 ,此時事務A讀取只有一條資料,而最後實際data是有兩條資料,就好象發生了幻覺一樣情況成為幻讀。
3、不可重複讀
出現原因:讀取資料的同時可以進行修改;
說明:事務A、事務B同時對data進行訪問,事務A對data進行讀取,事務B對data進行修改,當事務A第一次對data進行讀取完後事務B提交,此時當事務A第二次讀取該資料時的資料就與第一次讀取的資料不同,這種情況稱為不可重複讀。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
1)Read Uncommitted(讀未提交)
一個事務在執行過程中,既可以訪問其他事務未提交的新插入的資料,又可以訪問未提交的修改資料。如果一個事務已經開始寫資料,則另外一個事務不允許同時進行寫操作,但允許其他事務讀此行資料。此隔離級別可防止丟失更新。
2)Read Committed(讀已提交)
一個事務在執行過程中,既可以訪問其他事務成功提交的新插入的資料,又可以訪問成功修改的資料。讀取資料的事務允許其他事務繼續訪問該行資料,但是未提交的寫事務將會禁止其他事務訪問該行。 也就是說,在事務處理期間,如果其他事務修改了相應的表,那麼同一事務的多個SELECT語句可能返回不同的結果。 此隔離級別可有效防止髒讀。但會出現不可重複讀。
3)Repeatable Read(可重複讀取)
一個事務在執行過程中,可以訪問其他事務成功提交的新插入的資料,但不可以訪問成功修改的資料。讀取資料的事務將會禁止寫事務(但允許讀事務),寫事務則禁止任何其他事務。也就是說,如果使用者在另外一個事務中執行同條SELECT語句數次,結果總是相同的。(因為正在執行的事務所產生的資料變化不能被外部看到)此隔離級別可有效防止不可重複讀和髒讀。
4)Serializable(可序列化)
提供嚴格的事務隔離。它要求事務序列化執行,事務只能一個接著一個地執行,不能併發執行。此隔離級別可有效防止髒讀、不可重複讀和幻讀。但這個級別可能導致大量的超時現象和鎖競爭,在實際應用中很少使用。
總結:
想要了解更多資料庫相關知識,歡迎關注個人微信公眾號“SQL資料庫運維”,不定時更新你可能需要的文章!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015404/viewspace-2883773/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQLSERVER 的四個事務隔離級別到底怎麼理解?SQLServer
- 理解mysql的事務隔離級別MySql
- 理解MySQL事務隔離級別MySql
- 事務的四種隔離級別
- 事務四種隔離級別
- 四個案例看懂 MySQL 事務隔離級別MySql
- (轉)事務的四種隔離級別
- MySQL 的四種事務隔離級別MySql
- Mysql 四種事務隔離級別MySql
- 如何理解mysql 的事務隔離級別 repeatable readMySql
- 事務的四大特性,以及隔離級別
- MySQL事務的隔離級別MySql
- MySQL的事務隔離級別MySql
- MySQL事務隔離級別MySql
- 事務、特性、隔離級別
- MySQL 事務隔離級別MySql
- [Mysql]事務/隔離級別MySql
- PostgreSQL事務隔離級別SQL
- MySQL的事務隔離級別是什麼?MySql
- MySQL 事務的四大特性以及隔離級別MySql
- SQLSERVER 快照隔離級別 到底怎麼理解?SQLServer
- 事務系統的隔離級別
- 事務的隔離級別與MVCCMVC
- 資料庫事務的四大特性以及事務的隔離級別資料庫
- SqlServer事務詳解(事務隔離性和隔離級別詳解)SQLServer
- 資料庫事務與事務的隔離級別資料庫
- [20200512]oracle的事務隔離級別.txtOracle
- MySQL 事務的隔離級別初窺MySql
- 理解事務的4種隔離級別
- 深入理解MySQL中事務隔離級別的實現原理MySql
- MySQL的事務預設隔離級別是什麼MySql
- MySQL事務隔離級別和MVCCMySqlMVC
- 事務ACID特性與隔離級別
- 啥是 MySQL 事務隔離級別?MySql
- mysql如何修改事務隔離級別MySql
- mysql事務隔離級別和鎖MySql
- Mysql鎖與事務隔離級別MySql
- 資料庫事務的隔離級別及四大特性資料庫