MySQL事务的可串行化
生活随笔
收集整理的這篇文章主要介紹了
MySQL事务的可串行化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
可串行化——SERIALIZABLE
事務(wù)的最高級別,在每個讀的數(shù)據(jù)行上,加上鎖,使之不可能相互沖突,因此,會導(dǎo)致大量的超時現(xiàn)象
設(shè)置b賬戶,事務(wù)的隔離級別
B賬戶,首先,將b賬戶的隔離級別設(shè)置為SERIALIZABLE
可以看出,b賬戶的事務(wù)隔離級別設(shè)置為了SERIALIZABLE
演示可串行化
B賬戶,開啟一個事務(wù),查詢各個賬戶的余額
A賬戶,開啟一個事務(wù),在事務(wù)中執(zhí)行插入操作
可以看出,當(dāng)b賬戶正在事務(wù)中,查詢余額信息時,a賬戶中的操作是不能立即執(zhí)行的
提交事務(wù)
B賬戶,執(zhí)行完查詢余額,提交當(dāng)前事務(wù)
A賬戶,當(dāng)b賬戶中的事務(wù)提交之后,a賬戶中的添加操作,才能執(zhí)行成功
查詢余額
執(zhí)行成功
可以看出,如果一個事務(wù),使用了SERIALIZABLE——可串行化隔離級別時,在這個事務(wù)沒有被提交之前
其他的線程,只能等到當(dāng)前操作完成之后,才能進行操作,這樣會非常耗時,而且,影響數(shù)據(jù)庫的性能,通常情況下,不會使用這種隔離級別
總結(jié)
以上是生活随笔為你收集整理的MySQL事务的可串行化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL事务的幻读
- 下一篇: MySQL定义条件