网站首页 > 教程文章 正文
Innodb有哪些锁,都能干什么
InnoDB存储引擎支持多种类型的锁,包括共享锁、排他锁、意向锁、间隙锁、记录锁、临键锁、插入意向锁和自增锁。这些锁的作用如下:
1. 共享锁(S锁):又称为读锁,允许多个事务同时读取同一行数据,但不允许任何事务修改该行数据。如果一个事务对某一行数据加上了共享锁,其他事务只能再对该行数据加共享锁,而不能加排他锁。
2. 排他锁(X锁):又称为写锁,只允许一个事务对某一行数据进行修改,其他事务不能对该行数据加任何类型的锁。
3. 意向锁(IS锁和IX锁):用于在行级锁和表级锁之间进行转换。IS锁表示一个事务想要在某一行数据上加共享锁,IX锁表示一个事务想要在某一行数据上加排他锁。
4. 间隙锁(Gap锁):用于防止其他事务在一个范围内插入新的行数据。如果一个事务对某一范围内的行数据加上了间隙锁,其他事务不能在该范围内插入新的行数据。
5. 记录锁(Record锁):用于保护单个行数据,如果一个事务对某一行数据加上了记录锁,其他事务不能对该行数据加排他锁或间隙锁。
6. 临键锁(Next-Key锁):是记录锁和间隙锁的组合,用于保护一个范围内的行数据。如果一个事务对某一范围内的行数据加上了临键锁,其他事务不能在该范围内插入新的行数据。
7. 插入意向锁(Insert Intention锁):用于在插入新行之前,保证其他事务不能在同一范围内插入新的行数据。
8. 自增锁(Auto-Increment锁):用于保证在插入新行时,自增列的值是唯一的。
这些锁的作用不同,可以保证数据的一致性和并发性。
间隙锁和临键锁所说的数据范围是指索引数据。
比如列c,创建索引,现在把x>100的索引给加锁了,则新增x>100的行失败。
猜你喜欢
- 2025-07-01 结合隔离级别RR和RC来详细讲解下MVCC和LBCC
- 2025-07-01 Java锁最全详解(独享锁+共享锁+公平锁+非公平锁+乐观锁+悲观锁)
- 2025-07-01 美团面试:MySQL悲观锁是什么?谈谈底层实现原理?
- 2025-07-01 什么是悲观锁,什么是乐观锁,有什么区别
- 2025-07-01 MySQL进行行级锁的?一会next-key锁,一会间隙锁,一会记录锁?
- 2025-07-01 MySQL8行级锁(mysql如何加行级锁)
- 2025-07-01 二阶段提交的 prepare 阶段,binlog 和 InnoDB 各自会有哪些动作?
- 2025-07-01 看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法
- 2025-07-01 深入理解MySQL锁机制原理(mysql锁的作用)
- 2025-07-01 一文由浅入深带你完全掌握MySQL的锁机制原理与应用
- 最近发表
-
- 一个可以用来练手的C++开源编译器!
- Linux开发工具使用指南(linux软件开发工具)
- Linux下Makefile文件的模式规则和自动化变量
- 程序员的副业秘籍!一款可以快速搭建各类系统的后台管理系统
- postgresql自定义函数实现,通过contrib模块进行扩展
- Linux GCC编译及Makefile使用(gcc makefile编写)
- wordpress独立站上线两周没收录?原来是robots.txt搞的鬼…
- make sure用法解析(make sure sth)
- 每天一个 Python 库:Django全能Web框架,一站式后台开发
- Makefile实践(makefile经典教程)
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)