隔離級別
|
髒讀
|
非重複讀取
|
幻像讀
|
---|---|---|---|
未提交讀 read uncommitted
|
是
|
是
|
是
|
已提交讀 read committed
|
|
是
|
是
|
可重複讀 repeatable read
|
|
|
是(mysql next-key lock)
|
可序列化/串行化
serializable
|
|
|
|
Oracle
Oracle
的默認事務隔離級別是READ COMMITTED
Oracle數據庫支持READ COMMITTED 和 SERIALIZABLE這兩種事務隔離級別。所以Oracle不支持髒讀。
ORACLE提供了SQL92標準中的read committed和serializable,同時提供了非SQL92標準的read-only。
read-only與serializable的區別:read-only不允許在本事務中進行DM操作。
|
MySQL
MySQL的默認事務隔離級別是Repeatable Read
next-key lock 解決幻讀
http://blog.csdn.net/tb3039450/article/details/66475638
用戶可以用SET TRANSACTION語句改變單個會話或者所有新進連接的隔離級別。它的語法如下: SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
注意:默認的行爲(不帶session和global)是爲下一個(未開始)事務設置隔離級別。如果你使用GLOBAL關鍵字,語句在全局對從那點開始創建的所有新連接(除了不存在的連接)設置默認事務級別。你需要SUPER權限來做這個。使用SESSION 關鍵字爲將來在當前連接上執行的事務設置默認事務級別。
查看隔離級別:
SELECT @@tx_isolation;
|