可重復讀:兩個事務進行數據操作他們是互不干擾的 ,事務先A進行數據查詢,事務B進行一次事務修改並進行數據提交,事務A再進行一次查詢,數據是不改變的。
讀已提交:兩個事務進行數據操作,事務先A進行數據查詢,事務B進行一次事務修改並進行數據提交,事務A再進行一次查詢,數據是B修改后的數據。
// 涉及到的幾個命令
mysql -uroot -p123456
use mydemo
select @@global.transaction_isolation,@@transaction_isolation; (查看全局/會話隔離級別)
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;(設置隔離級別為 可重復讀)
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;(設置隔離級別為 讀已提交)
SHOW VARIABLES LIKE 'autocommit'; (查看是否自動提交)
set @@autocommit=0; (設置手動提交)
START transaction ; (開啟事務)
commit; (事務提交)
1.登陸數據庫查看數據

2.查看全局/會話隔離級別(mysql默認就是可重復讀,不用做修改)

3.查看是否是自動提交,並設置為手動提交 設置autocommit為on;(ON、OFF、1、0)都可以

-- -- 開啟另外一個窗口 做上述相同操作 ----
正式開始測試 可重復讀
事務先A進行數據查詢,事務B進行一次數據修改,事務A再次查詢數據 數據不變,事務B進行數據提交,事務A再進行一次查詢,數據是不改變的。
1 .兩個窗口都開啟事務

2.窗口A進行一次數據查詢

3.窗口B做一個數據的刪除,並查詢一個數據(這里查詢的數據是刪除成功的,因為在同一個事務)

4.窗口A再次查詢數據 (數據是不變的)

5. 窗口B提交事務

6. 窗口A再次查詢 (數據還是不變的)

7. 窗口A提交

8.窗口A提交之后再次查詢 數據是B修改后的

正式開始測試 讀已提交
事務先A進行數據查詢,事務B進行一次事務修改,事務A再次查詢數據 數據不變,事務B進行數據提交,事務A再進行一次查詢,數據是改變的。
1.事務A和事務B都要要做的操作

2.事務A查詢數據

3.事務B進行一次數據刪除 並查詢數據

4. 事務A再次查詢數據 數據跟第一次相比不變

5 .事務B提交數據

6.事務A再次查詢數據 發現事務B刪除的數據不在了

