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