[MySQL]InnoDB引擎的行锁和表锁
2024-10-16 10:35:33
1.行锁和表锁
在mysql 的 InnoDB引擎支持行锁,与Oracle不同,mysql的行锁是通过索引加载的,即是行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,
行锁则无法实现,取而代之的是表锁。
2.连表锁机制
在连表操作中,双方表选中的所以行当中一旦有一条在锁定中,则整个查询会被阻塞。
3.死锁
假如有记录1和2,当两个并行的事务a和b,a修改了记录1,而b修改了记录2,两个事物均未提交的情况下,a想接着修改记录2,而b想接着修改记录1,双方都等待着自己要修改的记录锁释放,结果是双方都会陷入无限阻塞中,
形成死锁,不过由于Mysql的异常机制导致后提交的mysql进程(也就是触发死锁的进程)会抛出错误:[Err] 1213 - Deadlock found when trying to get lock; try restarting transaction,因为一方抛出异常释放了锁定结束了,而另外一个进程则无感知,可以正常提交事务。
4.事件隔离级别
MySQL InnoDB的默认事件隔离级别是"REPEATABLE READ",未提交的事务,修改是不被体现在没加锁的查询上的,如果对数据一致性要求很高的查询,建议加上共享锁。
最新文章
- C#实现Levenshtein distance最小编辑距离算法
- #essay 161218# 自己的markdown笔记(日记)方法
- web页面放到手机页面,缩放问题
- js 日期处理,json处理
- SVM 最大间隔目标优化函数(NG课件2)
- factory工厂模式之简单工厂SimpleFactory
- spring基于注解的配置文件
- CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板。
- 新工程软连接到原来的工程的out目录后,可以直接编译模块
- iOS 错误 之 Potential leak of an object stored into 'cs'
- MySQL数据库基础(MySQL5.7安装、配置)
- Dynamics CRM 部署NLB后使用群集名称访问弹验证框验证不过的解决方法
- memcached分析
- R语言 实验三 数据探索和预处理
- SVM计算过程,对偶形式,核函数
- 用js实现个优先队列吧
- MySQL 逻辑备份工具
- 《Linux内核设计与实现》学习总结 Chap5
- Python中 append 和 extend 的区别
- 浅谈 温故知新——HTML5!