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