MySQL 中不同隔离级别对锁的要求也不一样,以下说法中,哪一项是正确的? A. 已提交读级别数据的读取都是不加锁的,但是数据的写入、修改和删除是需要加锁的 B. 可重复读级别利用了 MVCC,所以读操作也不需要加锁 C. 可重复读级别利用了临键锁(Next-Key lock)来防止幻读发生 D. 以上说法都对
时间: 2024-03-15 16:42:30 浏览: 58
选项 C 正确。
A. 已提交读级别数据的读取都是不加锁的,但是数据的写入、修改和删除是需要加锁的。这是错误的,已提交读级别下,读操作是不加锁的,写操作是需要加排它锁的。
B. 可重复读级别利用了 MVCC,所以读操作也不需要加锁。这是错误的,可重复读级别下,读操作是通过快照读实现的,不需要加锁,但是写操作仍然需要加排它锁。
C. 可重复读级别利用了临键锁(Next-Key lock)来防止幻读发生。这是正确的,可重复读级别下,为了防止幻读现象的发生,MySQL 使用临键锁(Next-Key lock)来锁定索引记录,同时使用 MVCC 机制来读取数据版本。
D. 以上说法不全都对,只有选项 C 正确。
阅读全文