开发者社区> 问答> 正文

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

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

展开
收起
游客by3jrxunaxsae 2022-05-12 18:27:26 355 0
来自:阿里技术
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
    赞同 展开评论 打赏
问答地址:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载