为什么不要使用长事务
生活随笔
收集整理的這篇文章主要介紹了
为什么不要使用长事务
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
比如,在某個時刻(今天上午9:00)開啟了一個事務A(對于可重復讀隔離級別,此時一個視圖read-view A也創建了),這是一個很長的事務……
事務A在今天上午9:20的時候,查詢了一個記錄R1的一個字段f1的值為1……
今天上午9:25的時候,一個事務B(隨之而來的read-view B)也被開啟了,它更新了R1.f1的值為2(同時也創建了一個由2到1的回滾日志),這是一個短事務,事務隨后就被commit了。
今天上午9:30的時候,一個事務C(隨之而來的read-view C)也被開啟了,它更新了R1.f1的值為3(同時也創建了一個由3到2的回滾日志),這是一個短事務,事務隨后就被commit了。
……
到了下午3:00了,長事務A還沒有commit,為了保證事務在執行期間看到的數據在前后必須是一致的(隔離級別為:可重復讀),那些老的事務視圖、回滾日志就必須存在了,這就占用了大量的存儲空間。
源于此,我們應該盡量不要使用長事務。
總結
以上是生活随笔為你收集整理的为什么不要使用长事务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql俩种表级锁
- 下一篇: 行级锁