数据库系统中,当事务T1在可重复读隔离级别下执行`SELECT * FROM table WHERE age>20`得到5条记录后,事务T2插入两条age=25的新记录并提交。接着T1再次执行相同查询,若要求避免幻读,数据库系统应如何实现?

答案解析

核心考点:隔离级别的实现机制与幻读的防范。需理解锁机制与MVCC的区别。 解题思路: 1. 可重复读隔离级别下,标准实现方式: - MySQL采用Next-Key Locking(记录锁+间隙锁) - PostgreSQL采用SSI(可序列化快照隔离) 2. 题目强调'要求避免幻读',因此需选择能绝对防止幻读的机制 3. 间隙锁(选项C)在查询时锁定age>20的范围,阻止其他事务插入 选项分析: A. 错误,隔离级别不能动态升级 B. 错误,快照隔离无法防止写入冲突 C. 正确,间隙锁是防止幻读的标准实现 D. 错误,MVCC本身不阻止新数据插入 易错点:混淆可重复读与可序列化的实现差异
正确答案:C
随机推荐
开始刷题