oracle資料庫事務不同事務隔離級別與v$transaction flag列思考
前言
oracle可以查詢v$transaction實時瞭解資料庫事務的執行情況,v$transaction有個列flag,引起我的注意,見下:
延伸閱讀
oracle資料庫事務transaction鎖lock模式思考之一
oracle提供2種事務隔離級別,read committed及serializable。前者是預設值。如果採用不同的事務隔離級別發起資料庫事務,
v$transaction之flag有何區別呢。
不同事務隔離級別的表現
read committed事務隔離級別
事務隔離級別 read committed,各種dml產生的事務 flag全是3587 SQL> set transaction isolation level read committed name 'tran76'; Transaction set. SQL> insert into t_test select 3,3 from dual; 1 row created. SQL> / NAME ADDR FLAG ---------------------------------------- ---------------- ---------- tran76 00000000843521C0 3587 SQL> delete from t_test where a=1; 1 row deleted. SQL> / NAME ADDR FLAG ---------------------------------------- ---------------- ---------- tran76 00000000843521C0 3587 SQL> update t_test set a=11; 2 rows updated. SQL> / NAME ADDR FLAG ---------------------------------------- ---------------- ---------- tran76 00000000843521C0 3587
serializable事務隔離級別
事務隔離級別serializable各種dml產生的事務的flag全是268439043 SQL> set transaction isolation level serializable name 'tran76'; Transaction set. SQL> insert into t_test select 3,3 from dual; 1 row created. SQL> select addr,flag from v$transaction; ADDR FLAG ---------------- ---------- 00000000840B04D8 268439043 SQL> update t_test set a=11 where a=1; 1 row updated. SQL> / NAME ADDR FLAG ---------------------------------------- ---------------- ---------- tran76 00000000843521C0 268439043 SQL> delete from t_test; 2 rows deleted. SQL> / NAME ADDR FLAG ---------------------------------------- ---------------- ---------- tran76 00000000843521C0 268439043 SQL> select addr,flag from v$transaction; ADDR FLAG ---------------- ---------- 00000000840B04D8 268439043
lock mode語句產生的事務隔離級別
lock table不會產生事務,當然也不會產生事務的flag SQL> lock table t_test in row share mode; Table(s) Locked. SQL> lock table t_test in row exclusive mode; Table(s) Locked. SQL> lock table t_test in share row exclusive mode; Table(s) Locked. SQL> lock table t_test in exclusive mode; Table(s) Locked. SQL> lock table t_test in share mode; Table(s) Locked.
思考
---可以對flag作文章,就可以知道事務是哪種事務隔離級別 select name,addr,flag,decode(flag,'268439043','serializable','3587','read committed') from v$transaction where addr=(select taddr from v$session where sid=76) NAME ADDR FLAG DECODE(FLAG,'2 ---------------------------------------- ---------------- ---------- -------------- tran76 00000000843521C0 268439043 serializable
聯絡方式
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-2664075/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫事務與隔離級別資料庫
- 資料庫事務與事務的隔離級別資料庫
- oracle資料庫事務transaction隔離級別isolation level的選擇依據Oracle資料庫
- oracle事務隔離級別transaction isolation level初識Oracle
- 聊聊資料庫的事務隔離級別資料庫
- 成為MySQL DBA後,再看ORACLE資料庫(十、事務與隔離級別)MySqlOracle資料庫
- MySQL資料庫引擎、事務隔離級別、鎖MySql資料庫
- [資料庫]事務的4種隔離級別資料庫
- 資料庫系列:事務的4種隔離級別資料庫
- oracle不同的事務transaction隔離級別isolation level進一步理解Oracle
- [20200512]oracle的事務隔離級別.txtOracle
- oracle資料庫事務transaction鎖lock模式思考之一Oracle資料庫模式
- 事務ACID特性與隔離級別
- 事務的隔離級別與MVCCMVC
- Mysql鎖與事務隔離級別MySql
- 3分鐘搞懂MySQL事務隔離級別及SET TRANSACTION影響事務MySql
- 資料庫事務的四大特性以及事務的隔離級別資料庫
- MySQL事務隔離級別MySql
- 事務、特性、隔離級別
- MySQL 事務隔離級別MySql
- [Mysql]事務/隔離級別MySql
- PostgreSQL事務隔離級別SQL
- 檢視oracle資料庫session事務設定的是哪個隔離級別Oracle資料庫Session
- 資料庫事務的隔離級別及四大特性資料庫
- 資料庫事務的四大特性和隔離級別資料庫
- oracle資料庫事務transaction 不同的鎖lock型別Oracle資料庫型別
- 資料庫事務併發產生的問題以及事務的隔離級別資料庫
- MySQL事務的隔離級別MySql
- 事務四種隔離級別
- 理解MySQL事務隔離級別MySql
- MySQL的事務隔離級別MySql
- KES資料庫實踐指南:探索KES資料庫的事務隔離級別資料庫
- SqlServer事務詳解(事務隔離性和隔離級別詳解)SQLServer
- Mysql事務隔離級別與鎖機制MySql
- 資料庫學習筆記:事務的特性和隔離級別資料庫筆記
- 論 MySQL 之事務隔離級別 | 資料庫篇MySql資料庫
- MySQL事務隔離級別和MVCCMySqlMVC
- 事務的四種隔離級別