1. 程式人生 > >可重複讀(repeatable-read)例子

可重複讀(repeatable-read)例子

1)開啟一個客戶端A,並設定當前事務模式為repeatable read,查詢表account的所有記錄

    (2)在客戶端A的事務提交之前,開啟另一個客戶端B,更新表account並提交

    (3)在客戶端A查詢表account的所有記錄,與步驟(1)查詢結果一致,沒有出現不可重複讀的問題

    (4)在客戶端A,接著執行update balance = balance - 50 where id = 1,balance沒有變成400-50=350,lilei的balance值用的是步驟(2)中的350來算的,所以是300,資料的一致性倒是沒有被破壞。可重複讀的隔離級別下使用了MVCC機制,select操作不會更新版本號,是快照讀(歷史版本);insert、update和delete會更新版本號,是當前讀(當前版本)。

5)重新開啟客戶端B,插入一條新資料後提交

(6)在客戶端A查詢表account的所有記錄,沒有 查出 新增資料,所以沒有出現幻讀