方法:尝试在session1的两次查询之间添加符合其查询条件的记录。
STEP 0:把两个session都设置为RR隔离级别:
SET CURRENT ISOLATION TO RR
STEP 1:在session1中做查询操作,但不提交:
SELECT * FROM TA WHERE AC1 > 0 AND AC1 < 10
假定查询结果有6条记录。
STEP 2:在session2中INSERT一条记录:
INSERT INTO TA (AC1, AC2) VALUES (7, 1)
STEP 3:在session1中做同样的查询操作:
SELECT * FROM TA WHERE AC1 > 0 AND AC1 < 10
查询结果仍为6条记录,且数据和第一次查询保持一致。
STEP 4:在session1中做commit/rollback操作
则session2立即继续执行。
结论:在“RR”隔离级别下不会产生“幻象记录”的问题。
作者“java-true”