Oracle-事務隔離級別
隔離級別(isolation level),是指事務與事務之間的隔離程度。
顯然,事務隔離程度越高,併發性越差、效能越低;事務隔離程度越低,併發性越強、效能越高。
ANSI/ISO SQL92標準中定義了4種事務隔離級別:
1. 序列化(serializable)
最高隔離級別。系統中所有的事務都是一個接一個執行的。因此也就不會發生任何事務之間的衝突問題。
2. 可重複讀(repeatable read)
一個事務所讀取的資料記錄不允許被其他事務所修改。
3. 讀已提交(read committed)
該級別允許其他事務修改當前事務所讀取的資料記錄,並且那個事務提交之後,當前事務可以看到修改後的資料。
4. 讀未提交(read uncommitted)
該級別允許其他事務修改當前事務所讀取的資料記錄,並且那個事務尚未提交時,當前事務就可以看到修改後的資料。即允許髒讀。
事務隔離級別不同,執行一條資料庫查詢,得到的結果很可能讓你感到意外,下面是這些情況的總結:
1. 髒讀
讀取了其他事務還沒有提交的資料。
2. 不可重複讀
當前事務已經讀取的資料記錄,被其他事務修改或刪除。
3. 幻影讀
其他事務插入了新的資料,當前事務以相同的查詢條件,在那個事務插入資料之前和之後查詢資料,得到的資料記錄的條數不一樣。
隔離級別 |
髒讀 |
不可重複讀 |
幻影讀 |
序列化 |
N |
N |
N |
可重複讀 |
N |
N |
Y |
讀已提交 |
N |
Y |
Y |
讀未提交 |
Y |
Y |
Y |
Oracle明確支援ANSI/ISO SQL92中定義的serializable和read committed兩種事務隔離級別。
同時,Oracle還提供了自己獨有的事務隔離級別:read only。
所以,可以說Oracle共支援3種事務隔離級別:
1. serializable
2. read committed
3. read only
Oracle預設的隔離級別是read committed。
檢視資料庫隔離級別的方法:
1. SELECT * FROM dual FOR UPDATE;
2. SELECT s.sid, s.serial#,
CASE BITAND(t.flag, POWER(2, 28))
WHEN 0 THEN 'READ COMMITTED'
ELSE 'SERIALIZABLE'
END AS isolation_level
FROM v$transaction t
JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');
修改資料庫隔離級別的方法:
設定隔離級別使用 SET TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29440247/viewspace-1107190/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 事務隔離級別MySql
- PostgreSQL事務隔離級別SQL
- 事務、特性、隔離級別
- MySQL事務隔離級別MySql
- [Mysql]事務/隔離級別MySql
- MySQL事務的隔離級別MySql
- MySQL的事務隔離級別MySql
- 理解MySQL事務隔離級別MySql
- mysql修改事務隔離級別MySql
- JDBC 事務(一) 隔離級別JDBC
- SqlServer事務詳解(事務隔離性和隔離級別詳解)SQLServer
- MySQL事務隔離級別和MVCCMySqlMVC
- 事務系統的隔離級別
- mysql如何修改事務隔離級別MySql
- mysql事務隔離級別和鎖MySql
- 啥是 MySQL 事務隔離級別?MySql
- Mysql 四種事務隔離級別MySql
- Mysql鎖與事務隔離級別MySql
- 理解mysql的事務隔離級別MySql
- 資料庫事務隔離級別資料庫
- MySQL事務隔離級別詳解MySql
- SQL Server事務的隔離級別SQLServer
- 資料庫事務與事務的隔離級別資料庫
- 事務隔離級別(圖文詳解)
- 事務ACID特性與隔離級別
- 資料庫事務與隔離級別資料庫
- 事務基礎特性及隔離級別
- MySQL 的四種事務隔離級別MySql
- 面試被吊打系列 - 事務隔離級別面試
- MySQL 事務的隔離級別初窺MySql
- CYmysql事務隔離級別詳情dbzMySql
- 資料庫事務及其隔離級別資料庫
- MySQL的四種事務隔離級別MySql
- 檢視ORACLE事務隔離級別方法Oracle
- SQL Server 事務隔離級別詳解SQLServer
- ORACLE資料庫事務隔離級別Oracle資料庫
- MySQL 事務隔離級別實現原理MySql
- 徹底搞懂 MySQL 事務的隔離級別MySql