MySQL nextkey lock 加锁范围总结:一定要实际操作

2023年 7月 11日 50.6k 0

data_locks

select * from performance_schema.data_locks;
LOCK_MODE LOCK_DATA 锁范围
X,REC_NOT_GAP 15 15 那条数据的行锁
X,GAP 15 15 那条数据之前的间隙,不包含 15
X 15 15 那条数据的间隙,包含 15
  • LOCK_MODE = X 是前开后闭区间;
  • X,GAP 是前开后开区间(间隙锁);
  • X,REC_NOT_GAP 行锁。
  • 这个单独介绍,是希望我理解的没有错误,如果大佬看到了,错误之处一定要帮忙指正出来。

    主键索引

  • 加锁时,会先给表添加意向锁,IX 或 IS;
  • 加锁是如果是多个范围,是分开加了多个锁,每个范围都有锁;(这个可以实践下 id < 20 的情况)
  • 主键等值查询,数据存在时,会对该主键索引的值加行锁 X,REC_NOT_GAP
  • 主键等值查询,数据不存在时,会对查询条件主键值所在的间隙添加间隙锁 X,GAP
  • 主键等值查询,范围查询时情况则比较复杂:
  • 8.0.17 版本是前开后闭,而 8.0.18 版本及以后,修改为了前开后开区间;
  • 临界 
  • 相关文章

    Oracle如何使用授予和撤销权限的语法和示例
    Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
    下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
    社区版oceanbase安装
    Oracle 导出CSV工具-sqluldr2
    ETL数据集成丨快速将MySQL数据迁移至Doris数据库

    发布评论