spring - mysql中事務(wù)是互斥的么?
問題描述
分別在不同的線程調(diào)用同一個(gè)帶事務(wù)的方法,那么這兩個(gè)方法的執(zhí)行時(shí)互斥的么,即一個(gè)方法必須要等另一個(gè)方法操作完么?
問題解答
回答1:這個(gè)取決于數(shù)據(jù)庫的隔離級(jí)別。兩個(gè)事務(wù)不互相影響就沒有必要互斥啊。
ISO 標(biāo)準(zhǔn)定義了下列隔離級(jí)別,SQL Server 數(shù)據(jù)庫引擎支持所有這些隔離級(jí)別:
未提交讀(隔離事務(wù)的最低級(jí)別,只能保證不讀取物理上損壞的數(shù)據(jù))
已提交讀(數(shù)據(jù)庫引擎的默認(rèn)級(jí)別)
可重復(fù)讀
可序列化(隔離事務(wù)的最高級(jí)別,事務(wù)之間完全隔離)
回答2:當(dāng)發(fā)生了當(dāng)前讀,都會(huì)對(duì)相應(yīng)的行加上排它鎖,并且在事務(wù)結(jié)束以后釋放鎖
兩次操作事務(wù)有對(duì)相同的行加排它鎖,其中一個(gè)線程就需要等待另外一個(gè)線程事務(wù)提交才能繼續(xù)執(zhí)行程序
兩次操作事務(wù)并沒有有對(duì)相同的行加排它鎖的,兩個(gè)線程相互不影響
回答3:這首先和你操作的數(shù)據(jù)有關(guān)系,如果操作的數(shù)據(jù)連個(gè)交集都沒有,就是并行的,如果有交集,還跟數(shù)據(jù)庫的事物隔離級(jí)別又關(guān)系,這里面東西就多了,你可以查查。
相關(guān)文章:
1. apache web server 怎么限制某一個(gè)網(wǎng)站對(duì)服務(wù)器資源的占用?2. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?3. docker start -a dockername 老是卡住,什么情況?4. java中返回一個(gè)對(duì)象,和輸出對(duì)像的值,意義在哪兒5. css3 - 純css實(shí)現(xiàn)點(diǎn)擊特效6. mysql - 在不允許改動(dòng)數(shù)據(jù)表的情況下,如何優(yōu)化以varchar格式存儲(chǔ)的時(shí)間的比較?7. 安全性測(cè)試 - nodejs中如何防m(xù)ySQL注入8. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?9. javascript - 關(guān)于apply()與call()的問題10. html5 - 請(qǐng)問現(xiàn)在主流的前端自動(dòng)化構(gòu)建工具是哪個(gè)?
