兩種丟失更新的區別

2021-07-16 17:14:58 字數 1002 閱讀 5139

第一類丟失更新 (通過設定隔離級別可以防止 repeatable read)

a事務撤銷時,把已經提交的b事務的更新資料覆蓋了。這種錯誤可能造成很嚴重的問題,通過下面的賬戶取款轉賬就可以看出來:

時間取款事務a

轉賬事務b t1

開始事務

t2

開始事務t3

查詢賬戶餘額為1000元    

t4 查詢賬戶餘額為1000元 t5

匯入100元把餘額改為1100元 t6

提交事務t7

取出100元把餘額改為900元

t8 撤銷事務

t9 餘額恢復為1000

元(丟失更新)

a事務在撤銷時,「不小心」將b事務已經轉入賬戶的金額給抹去了。 

第二類丟失更新 (需要應用程式控制,樂觀鎖)

a事務覆蓋b事務已經提交的資料,造成b事務所做操作丟失:    時間

轉賬事務a

取款事務b t1

開始事務t2

開始事務

t3 查詢賬戶餘額為1000元     t4

查詢賬戶餘額為1000元

t5 取出100元把餘額改為900元 t6

提交事務t7

匯入100元

t8 提交事務

t9 把餘額改為1100

元(丟失更新)

上面的例子裡由於支票轉賬事務覆蓋了取款事務對存款餘額所做的更新,導致銀行最後損失了100元,相反如果轉賬事務先提交,那麼使用者賬戶將損失100元。

include的兩種區別

c 中經常會用到 include 和 include 它們到底有什麼區別呢?1.引入標準庫檔案 include filename.h 格式引用標準庫的標頭檔案。編譯器將從標準庫目錄開始搜尋。標準庫目錄是在開發環境中設定的庫檔案的路徑。如圖 2.也就是說編譯器會到這兩個路徑中找引用的檔案,如果找不到,...

method get post ,兩種方式的區別

form中的get和post方法,在資料傳輸過程中分別對應了get和post方法。二者主要區別如下 1 get將表單中資料的按照variable value的形式,新增到action所指向的url後面,並且兩者使用 連線,而各個變數之間使用 連線 post是將表單中的資料放在form的資料體中,按照...

method get post ,兩種方式的區別

form中的get和post方法,在資料傳輸過程中分別對應了get和post方法。二者主要區別如下 1 get將表單中資料的按照variable value的形式,新增到action所指向的url後面,並且兩者使用 連線,而各個變數之間使用 連線 post是將表單中的資料放在form的資料體中,按照...