mysql事務之可重復讀(Repeated Read)
來自: http://www.jinglongjun.club/2016/01/mysql事務之可重復讀repeated-read/
1,Repeated Read
在可重復讀(REPEATABLE READS)隔離級別中,基于鎖機制并發控制的DBMS需要對選定對象的讀鎖(read locks)和寫鎖(write locks)一直保持到事務結束,但不要求“范圍鎖(range-locks)”,因此可能會發生“幻影讀(phantom reads)”
在該事務級別下,保證同一個事務從開始到結束獲取到的數據一致。這是Mysql的默認事務級別。
設置我們的數據庫事務為該級別。
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
2,場景
開啟事務1,在我們數據庫中對student表修改,事務不提交。
start TRANSACTION; select * from student; update student set name = 'a2' where id = 1; select * from student;
開啟事務2,查詢student表數據,事務不提交
start TRANSACTION;select * from student;
提交事務1。
start TRANSACTION; select * from student; update student set name = 'a2' where id = 1; select * from student; COMMIT;
事務2中繼續查詢。
查詢,發現未獲取到事務1的數據。
此事務級別保證了同一個事務獲取數據一致。
</div> 本文由用戶 xdkb2292 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!