默認隔離級別下 , mysql沒有解決幻讀問題 , 需要應用代碼里加一個鎖來解決
幻讀問題是啥?
默認的隔離級別是可重復讀 REPEATABLE-READ , 在這個模式下出現幻讀的例子一般是這兩種情況:
事務1和事務2同時 , 事務1讀資料 , 事務2插入資料提交 , 事務1插入同樣的資料時報錯說已經重復了 , 我明明剛才查的時候沒有 , 為啥報重復了?
事務1和事務2同時 , 事務1讀資料 , 事務2插入資料提交 , 事務1更新資料可以把事務2的資料也一塊給更了 , 明明剛才沒有怎么突然多出來資料了?
解決方式是在select讀時候的sql中增加for update , 會把我所查到的資料鎖住 , 別的事務根本插不進去 , 這樣就解決了,這里用到的是mysql的next-key locks
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/62725.html
標籤:MySQL
