資源描述:
《mysql innodb存儲引擎的事務隔離級別--》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、MySQLInnoDB存儲引擎的事務隔離級別>> 我們知道,在關系數(shù)據(jù)庫標準中有四個事務隔離級別: 未提交讀(ReadUnmitted):允許臟讀,也就是可能讀取到其他會話中未提交事務修改的數(shù)據(jù) 提交讀(Readmitted):只能讀取到已經提交的數(shù)據(jù)。Oracle等多數(shù)數(shù)據(jù)庫默認都是該級別 可重復讀(RepeatedRead):可重復讀。在同一個事務內的查詢都是事務開始時刻一致的,InnoDB默認級別。在SQL標準中,該隔離級別消除了不可重復讀,但是還存在幻象讀 串行讀(Serializable):完全串行化的讀,
2、每次讀都需要獲得表級共享鎖,讀寫相互都會阻塞 查看InnoDB系統(tǒng)級別的事務隔離級別:mysql>SELECTglobal.tx_isolation;+-----------------------+
3、global.tx_isolation
4、+-----------------------+
5、REPEATABLE-READ
6、+-----------------------+1roysql>SELECTtx_isolation;+-----------------+
7、tx_isolation
8、+------
9、-----------+
10、REPEATABLE-READ
11、+-----------------+1roysql>setglobaltransactionisolationlevelreadmitted; QueryOK,0roysql>setsessiontransactionisolationlevelreadmitted; QueryOK,0roread),所謂幻象讀,就是同一個事務內,多次select,可以讀取到其他sessioninsert并已經mit的數(shù)據(jù)。下面是一個小的測試,證明InnoDB的可重復
12、讀隔離級別不會造成幻象讀。測試涉及兩個session,分別為session1和session2,隔離級別都是repeateableread,關閉automitmysql>selecttx_isolation;+-----------------+
13、tx_isolation
14、+-----------------+
15、REPEATABLE-READ
16、+-----------------+1roysql>setautomit=off; QueryOK,0roysql>createtabletest(iint)en
17、gine=innodb; QueryOK,0roysql>insertintotestvalues(1); QueryOK,1roysql>select*fromtest; Emptyset(0.00sec) session1提交事務 mysql>mit; QueryOK,0roysql>select*fromtest; Emptyset(0.00sec) 以上試驗版本:mysql>selectversion();+-------------------------+
18、versio
19、n()
20、+-------------------------+
21、5.0.37-munity-nt-log
22、+-------------------------+1rowinset(0.00sec)>>>>這篇文章來自..,。