如何解決mysql幻讀

九三
185
2021-01-13 18:44:37
欄目: 云計(jì)算

如何解決mysql幻讀

mysql中出現(xiàn)幻讀的兩種解決方法

1.多版本并發(fā)控制(MVCC)

多數(shù)數(shù)據(jù)庫都實(shí)現(xiàn)了多版本并發(fā)控制,并且都是靠保存數(shù)據(jù)快照來實(shí)現(xiàn)的。事務(wù)每次取數(shù)據(jù)的時(shí)候都會(huì)取創(chuàng)建版本小于當(dāng)前事務(wù)版本的數(shù)據(jù),以及過期版本大于當(dāng)前版本的數(shù)據(jù)。其原理時(shí)將歷史數(shù)據(jù)存一份快照,所以其他事務(wù)增加與刪除數(shù)據(jù),對(duì)于當(dāng)前事務(wù)來說是不可見的。

2.next-key 鎖

next-key 鎖包含記錄鎖(行鎖)和間隙鎖兩部分,記錄鎖是加在索引上的鎖,間隙鎖是加在索引之間的。其原理是將當(dāng)前數(shù)據(jù)行與上一條數(shù)據(jù)和下一條數(shù)據(jù)之間的間隙鎖定,保證此范圍內(nèi)讀取的數(shù)據(jù)是一致的。

0