spring - mysql中事務(wù)是互斥的么?
問題描述
分別在不同的線程調(diào)用同一個(gè)帶事務(wù)的方法,那么這兩個(gè)方法的執(zhí)行時(shí)互斥的么,即一個(gè)方法必須要等另一個(gè)方法操作完么?
問題解答
回答1:這個(gè)取決于數(shù)據(jù)庫(kù)的隔離級(jí)別。兩個(gè)事務(wù)不互相影響就沒有必要互斥啊。
ISO 標(biāo)準(zhǔn)定義了下列隔離級(jí)別,SQL Server 數(shù)據(jù)庫(kù)引擎支持所有這些隔離級(jí)別:
未提交讀(隔離事務(wù)的最低級(jí)別,只能保證不讀取物理上損壞的數(shù)據(jù))
已提交讀(數(shù)據(jù)庫(kù)引擎的默認(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ù)庫(kù)的事物隔離級(jí)別又關(guān)系,這里面東西就多了,你可以查查。
相關(guān)文章:
1. python - 獲取到的數(shù)據(jù)生成新的mysql表2. javascript - js 對(duì)中文進(jìn)行MD5加密和python結(jié)果不一樣。3. mysql里的大表用mycat做水平拆分,是不是要先手動(dòng)分好,再配置mycat4. window下mysql中文亂碼怎么解決??5. sass - gem install compass 使用淘寶 Ruby 安裝失敗,出現(xiàn) 4046. python - (初學(xué)者)代碼運(yùn)行不起來,求指導(dǎo),謝謝!7. 為啥不用HBuilder?8. python - flask sqlalchemy signals 無法觸發(fā)9. python的文件讀寫問題?10. 為什么python中實(shí)例檢查推薦使用isinstance而不是type?
