mysql中出現幻讀的兩種解決方法
1.多版本并發控制(MVCC)
多數數據庫都實現了多版本并發控制,并且都是靠保存數據快照來實現的。事務每次取數據的時候都會取創建版本小于當前事務版本的數據,以及過期版本大于當前版本的數據。其原理時將歷史數據存一份快照,所以其他事務增加與刪除數據,對于當前事務來說是不可見的。
2.next-key 鎖
next-key 鎖包含記錄鎖(行鎖)和間隙鎖兩部分,記錄鎖是加在索引上的鎖,間隙鎖是加在索引之間的。其原理是將當前數據行與上一條數據和下一條數據之間的間隙鎖定,保證此范圍內讀取的數據是一致的。