[英]Isolation level and inconsistent state
假設我已經提交了隔離級別讀取
我的交易是A
另一個事務修改A和B.
然后我讀了B.
我做了一些涉及A和B的業務邏輯
所以我會發現自己與一個從未存在的國家合作......?
你是如何應對的?
解決方案是鎖定資源,直到它被釋放:
ES:
注意:如果K必須讀A和B,但是不能讀A,它就不會無用地阻塞B.
另一個解決方案是插入許多控件
ES:
您應該提供更詳細的信息,例如步驟1和3是在相同或不同的事務中執行。 還要提一下步驟4,即“業務邏輯”是否讀取或更新A和/或B.如果沒有更多信息,則無法准確回答您的問題。 在高層次 -
讀取已提交:您看到已提交的行。 在這種情況下,由於在另一個事務修改它之前讀取了A(假設您的子彈描繪了事件I到IV的順序),在步驟II之后可能沒有最新值A. 如果您在單獨的交易中閱讀B,您可能會在步驟II中看到B是最新的。
可重復讀取:在同一事務中始終讀取相同的數據。 如果一個事務嘗試修改A而另一個事務正在讀取它,則根據並發控制機制,重復讀取或更新將失敗。
PS要執行原子更新,您可以考慮使用“select for update”查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.