当等待的次数很高,而且每次等待的时长也不小的时候,我们就需要分析系统中为什么会有如此多的等待,然后根据分析结果着手制定优化计划 。总结InnoDB存储引擎由于实现了行级锁定,虽然在锁定机制的实现方面带来了性能损耗可能比表锁会更高一些,但是在整体并发处理能力方面要远远高于MyISAM的表锁的 。当系统并发量较高的时候,InnoDB的整体性能和MyISAM相比就会有比较明显的优势 。
但是,InnoDB的行级锁同样也有其脆弱的一面,当我们使用不当的时候,可能会让InnoDB的整体性能表现不仅不能比MyISAM高,甚至可能会更差 。
优化建议
- 尽可能让所有数据检索都能通过索引来完成,避免无索引行锁升级为表锁 。
- 合理设计索引,尽量缩小锁的范围 。
- 尽可能减少索引条件,及索引范围,避免间隙锁 。
- 尽量控制事务大小,减少锁定资源量和时间长度 。
- 尽可使用低级别事务隔离(但是需要业务层面满足需求)
文章插图
特点
文章插图
备份的一致性问题来看下边这个场景,比如我们创建的购买操作,涉及到了用户余额表+订单表,流程顺序如下:
- 当前正在备份用户余额表,备份了小明同学的余额是100
- 此时小明刚好下了订单,理应扣减50元
- 但由于用户余额表已经备份完毕,余额表不会受到影响
- 小明下好单了,如今来备份订单表了,能够备份到小明刚下的单
-
经验总结扩展阅读
- 【MySQL】Navicat15 安装
- 「MySQL高级篇」explain分析SQL,索引失效&&常见优化场景
- 31 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android系统中Flutter应用程序的包
- 「MySQL高级篇」MySQL索引原理,设计原则
- 我的世界怎么用附魔台附魔书(我的世界用高级附魔台怎么附魔)
- MySQL 索引失效-模糊查询,最左匹配原则,OR条件等。
- 30 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-番外篇
- MySQL 全局锁、表级锁、行级锁,你搞清楚了吗?
- 轻奢极简店名美甲 名字高级小众美甲店名
- llinux下mysql建库、新建用户、用户授权、修改用户密码