MySQL事務(wù)實現(xiàn)可重復(fù)讀
MySQL數(shù)據(jù)庫的默認(rèn)事務(wù)隔離級別是可重復(fù)讀(Repeatable Read)。在這個隔離級別下,可以解決讀已提交(Read Committed)產(chǎn)生的幻讀問題,事務(wù)在開始時創(chuàng)建一個數(shù)據(jù)快照,并在整個事務(wù)期間使用這個快照進(jìn)行讀取操作,確保讀取的數(shù)據(jù)在事務(wù)內(nèi)保持一致。
可重復(fù)讀事務(wù)隔離級別的主要特點有:
(1)一致性讀:因為在可重復(fù)讀隔離級別下,事務(wù)的Select操作會讀取到事務(wù)開始時的數(shù)據(jù)快照。
(2)行級鎖:當(dāng)一個事務(wù)修改一行數(shù)據(jù)時,會鎖定該行,防止其他事務(wù)同時修改或刪除該行,這樣可以保證事務(wù)的原子性和隔離性。
(3)多版本并發(fā)控制(MVCC): MySQL使用多版本并發(fā)控制機(jī)制來實現(xiàn)可重復(fù)讀隔離級別。每個事務(wù)都會看到一個獨立的數(shù)據(jù)版本,不同的事務(wù)之間不會相互干擾。
在MySQL數(shù)據(jù)庫的隔離級別時可重復(fù)讀(Repeatable Read)的情況,驗證數(shù)據(jù)不會產(chǎn)生幻讀。
測試一、
連接A:開啟事務(wù)
在連接B中,插入一條數(shù)據(jù):
在連接B中,可以查詢到4條記錄,但是在連接A中,仍然是原來的三條記錄,如下所示:
測試二:
在連接A中開啟事務(wù):
在連接B中修改id=3的money值,
但是在連接A中看到的仍然是事務(wù)開始時的值。
通過測試一、測試二可以看到,MySQL的Repeatable Read事務(wù)隔離級別確保了事務(wù)的一致性。
到此這篇關(guān)于MySQL事務(wù)實現(xiàn)可重復(fù)讀的文章就介紹到這了,更多相關(guān)MySQL 可重復(fù)讀內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)
MySQL 中的 FIND_IN_SET 函數(shù)用于在逗號分隔的字符串列表中查找指定字符串的位置,本文就來介紹一下mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)2024-08-08mysqld_multi在Linux服務(wù)器上運行多個MySQL實例
在Linux系統(tǒng)上使用mysqld_multi來啟動和管理多個MySQL實例是一種常見的做法,這種方式允許你在同一臺機(jī)器上運行多個MySQL服務(wù),每個服務(wù)可以有不同的配置和數(shù)據(jù)目錄,這篇文章展示如何設(shè)置和使用mysqld_multi來啟動多個MySQL實例2025-02-02MySQL 創(chuàng)建多對多和一對一關(guān)系方法
這篇文章主要介紹了MySQL 創(chuàng)建多對多和一對一關(guān)系方法,文章舉例詳細(xì)說明具有一定的參考價值,需要的小伙伴可以參考一下2022-03-03mysql installer community 8.0.12.0安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql installer community 8.0.12.0安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08