色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql如何解決幻讀的

老白2年前8瀏覽0評(píng)論

在MySQL中,幻讀是指一個(gè)事務(wù)在讀取了一組記錄之后,另一個(gè)事務(wù)又插入了滿足該查詢條件的記錄,之后第一個(gè)事務(wù)再次查詢時(shí),就會(huì)發(fā)現(xiàn)多了一些記錄。

MySQL使用鎖和MVCC來解決幻讀問題。

-- 鎖
SELECT ... FROM ... WHERE ... FOR UPDATE;
-- 對(duì)查詢結(jié)果加鎖,保證其他事務(wù)無法插入記錄
-- MVCC
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- 設(shè)置事務(wù)隔離級(jí)別為可重復(fù)讀,避免其他事務(wù)的修改
-- 通過使用InnoDB存儲(chǔ)引擎的MVCC機(jī)制,MySQL可以在讀取一個(gè)記錄時(shí)生成一個(gè)快照,這個(gè)快照用來保證當(dāng)前事務(wù)以可重復(fù)讀的方式操作這個(gè)記錄時(shí),不會(huì)被其他事務(wù)修改。
-- 當(dāng)然,這個(gè)快照并不能防止其他事務(wù)插入一條新記錄,也就是無法解決幻讀問題。這時(shí)可以使用鎖來保證讀取結(jié)果的一致性。

綜上所述,MySQL通過鎖和MVCC機(jī)制來解決幻讀問題。