频繁插入,用什么存储引擎更合适?

​有童鞋在后台留言:

沈老师,MyISAM只支持表锁,但网上文章却说,在并发插入量比较大的时候,比较适合使用MyISAM,这矛盾吗?​

这个问题,涉及MySQL表锁的一些细节,借着这个问题,系统性说下表锁的“所以然”。

画外音:网上不少文章只说结论,不说为什么,容易让人蒙圈。​

MySQL表锁知识系统性梳理。

哪些存储引擎使用表锁?​

MySQL,除InnoDB支持行锁外,MySQL的其他存储引擎均只使用表锁,例如:MyISAM, MEMORY, MERGE等。

表锁有什么好处?​

(1) 表锁占用内存少很多,行锁的数量与行记录数相关,非常耗内存;

(2) 如果业务经常读写表中很大一部分数据时,表锁会更快,因为此时只涉及一个锁,而不是同时管理N多个锁;

(3) 如果业务经常使用group by,表锁会更快,原因同(2);

画外音:这样的一些场景,使用MyISAM比InnoDB更优。​

表锁是怎么运作的?​

和其他临界资源的读写锁类似。

写时,要加写锁:

  • 如果表没有锁,对表加写锁;
  • 否则,入写锁队列;

读时,要加读锁:

  • 如果表没有写锁,对表加读锁;
  • 否则,入读锁队列;

表锁释放时:

如果写锁队列和读锁队列里都有锁,写有更高的优先级,即写锁队列先出列。这么做的原因是,如果有“大查询”,可能会导致写锁被批量“饿死”,而写锁往往释放很快。

画外音:潜台词是,如果有大量并发update请求,select会等所有update请求执行完才执行。​

如何查看表锁情况?​

如果要分析表锁冲突情况,可查看:

  • Table_locks_immediate:立刻获得表锁的次数;
  • Table_locks_waited:需要等待表锁的次数;

这两个变量。

使用以下命令查看:

showstatuslike'Table%';

如果等待表锁的次数占比较大,说明表锁可能是潜在瓶颈。

说了半天,还是没有讲到点子上,为什么在并发插入量比较大的时候,比较适合使用MyISAM呢?不会因为表锁频繁冲突而导致吞吐量降低吗?​

画外音:知识的系统性,比问题答案更重要。​

知识点一:​

MyISAM的索引与记录存储分离,有单独的区域存储行记录,PK是非聚集索引。

这个知识点就不展开了,以前讲过。

知识点二:​

MyISAM表,如果数据文件(data file)紧密存储,中间没有空闲块(free blocks),数据总是插入到数据文件的尾部(end),就如同追加日志一样,性能很高,此时的并发insert与select是不加锁的(lock free)。

如上图所示:

  • 数据文件连续且紧密的存储着;
  • 并发insert无表锁争抢(只需插入队列互斥);
  • insert只在数据文件的尾部进行;
  • 并发select也能够同时进行(共享读锁);

知识点三:​

MyISAM表,如果数据文件(data file)中间有空洞(hole),上述机制会失效,直到空洞被新数据填满,又会启用不加锁机制。

空洞是怎么导致的?​

删除或者修改数据,都可能导致空洞。

如上图所示:

  • 中间删除了一些数据,导致中间出现空闲块(free blocks);
  • 此时,select和insert会有表锁冲突,无法并发;

再如上图所示:

  • 随着插入的进行,中间的空闲块又被填满了;
  • 此时,并发select和insert又恢复了;

结论

虽然MyISAM只支持表锁,但高并发select与insert的业务场景,上述机制使得MyISAM的表锁依然有非常强劲的性能。

画外音:本文基于MySQL5.6。​

思路比结论重要,希望大家有收获。​

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/251880.html<

(0)
运维的头像运维
上一篇2025-04-29 04:36
下一篇 2025-04-29 04:37

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注