开发者社区 问答 正文

在Update & Delete语句加锁RC和RR有哪些不同?

在Update & Delete语句加锁RC和RR有哪些不同?

展开
收起
游客by3jrxunaxsae 2022-05-12 18:27:26 434 分享 版权
来自: 阿里技术
1 条回答
写回答
取消 提交回答
  • 1)聚簇索引(查询命中) UPDATE students SET score = 100 WHERE id = 15; RC、RR都是对聚簇索引加X锁。 2)聚簇索引(查询未命中) UPDATE students SET score = 100 WHERE id = 16; C不加锁,RR在16之前和之后的范围里加GAP锁。 3)二级唯一索引(查询命中) UPDATE students SET score = 100 WHERE no = 'S0003'; RC、RR会对二级和聚簇索引都加X锁(防止其他事务通过聚簇改数据)。 4)二级唯一索引(查询未命中) UPDATE students SET score = 100 WHERE no = 'S0008';RC不加锁,RR只在二级索引加GAP。 5)二级非唯一索引(查询命中) UPDATE students SET score = 100 WHERE name = 'Tom'; RC对二级和聚簇加X锁,RR对二级加X锁和Gap对聚簇加X锁。 6)二级非唯一索引(查询未命中) UPDATE students SET score = 100 WHERE name = 'John'; RC不加锁,RR只在二级索引加GAP。

    2022-05-12 19:09:02
    赞同 展开评论
问答地址: