当前位置: 首页 > news >正文

Mysql锁机制与优化实践以及MVCC底层原理剖析--重点笔记

1,锁分类

从性能上分为乐观锁(用版本对比或CAS机制)和悲观锁,乐观锁适合读操作较多的场景,悲观
锁适合写操作较多的场景,如果在写操作较多的场景使用乐观锁会导致比对次数过多,影响性能
从对数据操作的粒度分,分为表锁、页锁、行锁
从对数据库操作的类型分,分为读锁和写锁(都属于悲观锁),还有意向锁
读锁(共享锁,S锁(Shared)):针对同一份数据,多个读操作可以同时进行而不会互相影响,比如:
1 select * from T where id=1 lock in share mode
写锁(排它锁,X锁(eXclusive)):当前写操作没有完成前,它会阻断其他写锁和读锁,数据修改操作都
会加写锁,查询也可以通过for update加写锁,比如:
1 select * from T where id=1 for update
意向锁(Intention Lock):又称I锁,针对表锁,主要是为了提高加表锁的效率,是mysql数据库自己
加的。当有事务给表的数据行加了共享锁或排他锁,同时会给表设置一个标识,代表已经有行锁了,其他事
务要想对表加表锁时,就不必逐行判断有没有行锁可能跟表锁冲突了,直接读这个标识就可以确定自己该不
该加表锁。特别是表中的记录很多时,逐行判断加表锁的方式效率很低。而这个标识就是意向锁。
意向锁主要分为:
意向共享锁,IS锁,对整个表加共享锁之前,需要先获取到意向共享锁。
意向排他锁,IX锁,对整个表加排他锁之前,需要先获取到意向排他锁。
 

2,锁优化实践

尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁
合理设计索引,尽量缩小锁的范围
尽可能减少检索条件范围,避免间隙锁
尽量控制事务大小,减少锁定资源量和时间长度,涉及事务加锁的sql尽量放在事务最后执行
尽可能用低的事务隔离级别
 

3,MVCC多版本并发控制机制

image

 

http://www.jsqmd.com/news/512737/

相关文章:

  • CTF刷题神器大比拼:在线工具vs本地软件哪个更适合你?
  • 多周期信号互掐?FXVC带你理清信号,找准核心分析逻辑
  • AI赋能绩效评估:用智能工具与策略做出更精准的人才决策
  • Redis 入门与实践:从基础到 Stream 消息队列
  • 不用写代码!用Cherry Studio+Ollama打造行业专属GPT助手(含30+预置模板调参心得)
  • 产生式表示法
  • 2026年高口碑AIGC短剧制作出海服务商推荐榜单
  • 无线网Wi-Fi简介
  • STP 生成树协议课程课后总结
  • 第四篇:嵌入式系统常用通信接口详解(I2C、SPI、UART、RS232/485、CAN、USB)
  • 满载效率|D100运载无人机实测
  • 盒模型深度解剖:标准盒模型与怪异盒模型的区别
  • MySQL 的查询优化器如何选择执行计划?
  • 基于Python的黑龙江旅游景点数据分析系统的实现_flask+spider
  • ERP系统
  • 2026年国贤府PARK价格深度解析:价值锚点与市场前景研判 - 十大品牌推荐
  • Vue3 + vxe-table 实战:如何用工具栏模式实现ERP系统的列个性化记忆功能?
  • 天猫下单,门店换货;全渠道售后“此刻更丝滑”!商派Omni-OMS系统助力
  • 分析蛋糕裱花烘焙培训学校,太原欧米奇性价比高不高,值得选吗? - myqiye
  • 思科Nexus交换机 --- 华为CE6800 STP生成树对接故障
  • 2026白酒制造商排名出炉,雄盛橄榄酒以特色工艺和服务性价比入选 - mypinpai
  • Grid网格布局从入门到精通:像大师一样布局
  • 探讨适合家居行业的AIGEO搜索优化品牌如何选择 - 工业设备
  • 从零开始:使用ArcGIS系列工具高效生成TPK与mmpk离线地图包
  • Python 开发“设计模式”指南
  • 设计旅途之照明篇(四)——照明系统图
  • 在国产替代中如何选择可靠连接器?2026年针对赫斯曼与Lumberg插头等三款主流产品的专业评测 - 速递信息
  • DS18B20 单总线(1-Wire)协议:UART 模拟篇
  • 2026年南京口碑好的日立空调售后服务推荐,专业维修与保养全解析 - 工业品网
  • GPT-5.4降价血战:mini当老大,nano做小弟,独立开发者的省钱攻略