美文网首页
Mysql 可重复读

Mysql 可重复读

作者: 复苏森林 | 来源:发表于2020-10-17 16:06 被阅读0次

事务隔离级别 RR 可重复读

在RC 已提交读 级别下,同一事务中:

当我们使用读语句时:

  • 确定扫描行
  • 多次读取都是返回最新值,不锁行,值在期间可被其他事务提交修改,修改后,再读取就是修改后的值了

当我们使用写语句时:

  • 确定扫描行
  • 不锁行,值在期间可被其他事务提交修改
针对当前读,RC隔离级别保证对读取到的记录加锁 (记录锁),存在幻读现象

在RR 可重复读级别下,同一事务中:

当我们使用读语句时:

  • 确定扫描行
    • 有索引按索引确定
    • 没有索引按全表确定
  • 缓存扫描行
  • 多次读取都是返回缓存

当我们使用写语句时:

  • 确定扫描行
  • 使用间隙锁锁定扫描行
  • 写入时引用的值按最新值
    快照读:简单的select操作,属于快照读,不加锁。(当然,也有例外)
        select * from table where ?;
 
    当前读:特殊的读操作,插入/更新/删除操作,属于当前读,需要加锁
 
        select * from table where ? lock in share mode;
        select * from table where ? for update;
        insert into table values (…);
        update table set ? where ?;
        delete from table where ?;

相关文章

网友评论

      本文标题:Mysql 可重复读

      本文链接:https://www.haomeiwen.com/subject/miffmktx.html