預設隔離級別下 , mysql沒有解決幻讀問題 , 需要應用代碼裡加一個鎖來解決 幻讀問題是啥? 預設的隔離級別是可重覆讀 REPEATABLE-READ , 在這個模式下出現幻讀的例子一般是這兩種情況: 事務1和事務2同時 , 事務1讀數據 , 事務2插入數據提交 , 事務1插入同樣的數據時報錯說 ...
預設隔離級別下 , mysql沒有解決幻讀問題 , 需要應用代碼裡加一個鎖來解決
幻讀問題是啥?
預設的隔離級別是可重覆讀 REPEATABLE-READ , 在這個模式下出現幻讀的例子一般是這兩種情況:
事務1和事務2同時 , 事務1讀數據 , 事務2插入數據提交 , 事務1插入同樣的數據時報錯說已經重覆了 , 我明明剛纔查的時候沒有 , 為啥報重覆了?
事務1和事務2同時 , 事務1讀數據 , 事務2插入數據提交 , 事務1更新數據可以把事務2的數據也一塊給更了 , 明明剛纔沒有怎麼突然多出來數據了?
解決方式是在select讀時候的sql中增加for update , 會把我所查到的數據鎖住 , 別的事務根本插不進去 , 這樣就解決了,這裡用到的是mysql的next-key locks