自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 MySQL 页分裂:你不得不了解的InnoDB 底层机制(中)

上一篇我们介绍了 InnoDB 页分裂的基本概念:当一个索引页的空间不足以容纳新记录时,InnoDB 会将该页一分为二,把部分记录迁移到新页中。我们也分析了页分裂带来的几个问题——页空间利用率下降、数据物理顺序被打乱、写入过程中额外的 I/O 开销。InnoDB 在源码层面到底是怎么做的?分裂点怎么选?记录怎么搬?父节点怎么更新?本篇以顺序插入(自增主键)为切入场景,从源码角度跟踪根节点分裂和叶子节点向右分裂的完整执行过程。

2026-09-27 08:36:46 330

原创 线上惨案复盘:一个 ADD PARTITION 是怎么把正常 INSERT 逼出死锁的?

看官方文档描述让人非常安心:RANGE/LIST的是Inplace操作,几乎不搬数据,业务还能继续写入。结果半夜脚本一跑,监控突然冒出一堆,受害者偏偏是白天跑得好好的普通INSERT语句。很多人排查第一反应是:“是不是新分区被锁了?INSERT的元数据锁(MDL)。下面用一张表、两个会话,分析底层的逻辑。

2026-09-25 17:37:54 380

原创 国产数据库是一面照妖镜,照出了多少“伪架构师”的底裤

很多研发团队习惯把数据库当成“万能垃圾桶”,试图用动辄几百行的超级SQL来弥补系统架构设计的缺陷。过去,Oracle凭借极其强大的单机性能和优化器替无数烂架构兜了底;如今,在全面信创与分布式改造的浪潮下,这些“裸奔”的系统被彻底打回原形。本文从二十年架构演进的视角,扒开复杂SQL背后的设计窟窿,并带你看看真正抗住海量并发的现代数据架构,是如何通过严格的分层边界来彻底根治这一顽疾的。时代变了,别再拿昨天的思维做明天的系统。做了二十来年的数据库,看过的系统大大小小也有几百个了。

2026-09-24 15:31:55 106

原创 同样是断电写了一半,为什么MySQL库毁人亡,Oracle却稳如泰山?

每次做数据库性能压测或者遭遇写IO瓶颈时,总有人会提出一个看似能“一键起飞”的方案:关掉MySQL的(双写缓冲区)。毕竟刷脏页时,InnoDB要先把这页写进双写文件,再写进真正的.ibd文件,看着就像同一份数据傻乎乎地写了两遍。把这参数一关,写盘压力瞬间掉一截,监控曲线别提多好看了。但在普通的ext4或xfs文件系统上,这一刀砍掉的可不止是IO,而是数据库的保命底线。你赌的是断电那一瞬间,16KB的数据刚好能一次性安全落地。

2026-09-24 15:21:34 245

原创 MySQL 页分裂:你不得不了解的InnoDB 底层机制 (上)

页分裂(Page Split)是 InnoDB 存储引擎中一个极其重要却常被忽视的底层机制。它直接影响着数据库的写入性能、空间利用率和查询效率,是每一位研发人员和 DBA 都应该深入理解的核心知识。本系列文章将分为上、中、下三篇,由浅入深地带你全面掌握页分裂:话不多说,我们从上篇开始。InnoDB 中,页(Page)是数据存储和读写的最小单位,默认大小为16KB。而 MySQL 的表是索引组织表,每个页中的记录按照主键的物理顺序排列(并非插入顺序),形成一个单向链表。页与页之间则通过双向链表。

2026-09-22 23:00:13 298

原创 揭秘InnoDB 自增主键插入延迟与页分裂机制

最右页满了会分裂,新行去右边,左页保持紧凑。所有并发写入都在同一页抢Latch,分裂那一下排队队伍变长,监控上就会出现一下一下的尖刺。理清了这个底层逻辑,你就能精准地决定是该“缩窄行宽”,还是该“打散热点”,而不是盲目地去重建索引。

2026-09-22 22:55:28 451

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除