MYSQL的锁机制

MYSQL的锁机制按存储引擎划分

若加上事务需要另外分析

innodb 支持表锁和行锁

行级锁是加在索引上面的,若没有索引,则采取表锁

  • for update:IX锁(意向排它锁),即在符合条件的rows上都加了排它锁
  • lock in share mode:是IS锁(意向共享锁),即在符合条件的rows上都加了共享锁
  • 排它锁:X锁、 写锁,事务A对一个资源加了X锁后只有A本身能对该资源进行读和写操作,其他事务对该资源的读和写操作都将被阻塞,直到A释放锁为止
  • 共享锁:S锁、 读锁, 事务A锁定的数据其他事务可以共享读该资源,但不能写,直到事务A释放
  • Next-Key Lock是Gap Lock(间隙锁)和Record Lock(行锁)的结合版,都属于Innodb的锁机制

MyISAM 支持表锁和并发表锁

  • MySQL的表级锁有两种模式:表共享读锁(Table Read Lock)表独占写锁(Table Write Lock)

  • MyISAM 默认开启 共享读锁 和 独占写锁 , 不需要使用命令来显式加锁

  • MyISAM 默认开启并发插入

  • 但是 当INSERT时,有SELECT同时进行读操作时,如果有多个 INSERT语句,它们将与这些SELECT语句同时排队并按顺序执行 。并发插入效果并不能立即就实现

  • concurrent_insert 的状态有 0 1(AUTO) 2

  • 0 禁止并发插入 , 1(AUTO)在MyISAM表已经在数据文件中没有孔 (也就是表中间没有删除任何一行)的情况下支持并发插入

  • 2 即使对于已删除行的表,也允许在表末尾进行并发插入。

  • MYSQL官方文档:https://dev.mysql.com/doc/refman/5.7/en/concurrent-inserts.html

posted @   爪哇搬砖  阅读(113)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示