avatar
文章
98
标签
40
分类
15
首页
时间轴
标签
分类
清单
  • 音乐
  • 照片
  • 电影
友链
关于
JIE的笔记本
首页
时间轴
标签
分类
清单
  • 音乐
  • 照片
  • 电影
友链
关于

JIE的笔记本

09第九章:从数据页的角度看B+树及MySQL中数据的底层存储原理
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
在MySQL的InnoDB存储引擎中,数据的底层存储并非简单的无序存放,而是通过表空间-段-区-页-行的层级结构组织,并基于B+树实现高效的索引和数据查询。这也是MySQL能支撑高并发、大数据量查询的核心原因之一。上一章我们从行的角度解析了单条数据的存储格式,本章将从数据页这个InnoDB最小读写单位出发,深入剖析数据页的内部结构,并结合B+树讲解InnoDB中数据的整体存储原理,同时解答相关高频面试题。 一、InnoDB 数据存储的层级结构InnoDB对数据的管理有着严格的逻辑层级划分,从大到小依次为:数据库 -> 表空间 -> 段 -> 区 -> 页 -> 行,每一层都有其明确的职责和存储规则,层层嵌套构成了完整的数据存储体系。 1. 表空间 (Tablespace)表空间是InnoDB存储数据的最高级容器,对应磁盘上的.ibd或ibdata1文件。MySQL中可通过配置innodb_file_per_table=ON实现单表单表空间,此时每张表的所有数据和索引都会单独存放在对应的表名.ibd文件中(如user表对应user.ibd);若关闭该配...
10第十章:深入了解B+树及B+树的性能优势
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
在MySQL的学习之路中,索引是提升查询性能的核心,而B+树则是MySQL索引的“灵魂”——无论是InnoDB还是MyISAM存储引擎,都以B+树作为底层索引结构。很多初学者会有疑问:为什么数据库不选择我们熟悉的二叉树、红黑树,偏偏青睐B+树?B+树的底层结构到底有什么优势,能支撑千万级、亿级数据的高效查询?本章将从底层数据结构出发,结合MySQL的实际实现,深度解析B+树的原理、性能优势,以及它在数据库中的具体应用,帮你彻底搞懂B+树与MySQL索引的关联。 一、什么是 B+ 树?1. 核心定义B+ 树(B Plus Tree)是一种多路平衡查找树(Multi-way Balanced Search Tree),专门为磁盘存储场景设计,广泛应用于数据库和文件系统的索引结构。它并非全新的数据结构,而是对B树(B-Tree,注意不是B-树,两者无区别,只是写法不同)的优化和改进,解决了B树在范围查询、磁盘IO效率上的不足。 与二叉树(每个节点最多2个子节点)不同,B+树的每个节点可以有m个子节点(称为m阶B+树),m的大小由磁盘页的大小决定——这也是B+树适配磁盘存储的关键设计之一...
11第十一章:MySQL中常见的索引失效情况原因分析及解决方案
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
前言: 在 MySQL 数据库中,很多时候 SQL 的 CRUD 性能极差,并不是因为数据量真的大到无法处理,而是开发者对索引底层实现不够透彻,写出了让索引 “失效” 的 SQL。本文就带你一次性搞懂:MySQL 中最常见的 6 类索引失效场景,从本质原因到检测方式,再到可直接落地的解决方案,无论是日常开发优化,还是后端面试,都能直接用上。 1)左 / 左右模糊匹配(LIKE 的 % 在左侧或两侧)示例12SELECT * FROM users WHERE name LIKE '%smith';SELECT * FROM users WHERE name LIKE '%smi%'; 为什么失效(本质)InnoDB 的 B+ 树索引是按字段值有序存储的,只有前缀匹配才能利用索引的有序性做快速范围查找。 当 LIKE 以 % 开头时,查询需要匹配 “任意前缀 + 目标串”,B+ 树无法定位到连续的有序区间,只能走全表扫描或全索引扫描,索引直接失效。 如何检测执行 EXPLAIN 查看执行计划: type = ALL(全表扫描) 或 typ...
13第十三章:MySQL 事务详解:原理、特性、并发问题与隔离级别
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
在日常开发中,你是否遇到过这样的场景:测试库中几百条数据查询飞快,上线后生产库几十万条数据,相同的 SQL 突然慢到超时?90% 的情况下,问题都出在索引上。 一、索引的本质:不止是 “目录” 那么简单1.1 索引到底是什么?用一个最通俗的比喻:索引就像一本书的 “目录”。 如果没有目录(索引),要找某段内容,你需要从第一页翻到最后一页(全表扫描);有了目录(索引),可以直接定位到目标章节,效率提升成百上千倍。 从技术角度来说,MySQL 的索引(InnoDB 引擎)底层基于B + 树结构实现: 非叶子节点存储索引键和指针,用于快速定位; 叶子节点存储完整的索引数据(主键索引还会存储整行数据); 所有数据都在叶子节点,且按顺序排列,天然支持范围查询。1.11聚簇索引与非聚簇索引 在 MySQL InnoDB 中,索引的核心区别可以用两句话概括:聚簇索引 = 索引就是数据本身,非聚簇索引 = 索引是索引,数据是数据。 聚簇索引本质就是主键索引,一张表只能存在一个,它最大的特点是数据行和索引存储在一起,索引的叶子节点直接存储完整的一行数据。可以把它比作一本按页码排序的书,找到页码...
从零起步学习MySQL 第一章:初识MySQL及深入理解内部数据类型
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
引言从今天开始,我们正式启动MySQL的系统性学习之旅!本专栏将完全从零起步,循序渐进地带大家吃透MySQL的整个知识库——从最基础的概念、操作,到进阶的优化、调优,再到生产环境的实战技巧,全程干货无冗余。无论你是刚入门的后端新手,还是想巩固基础的开发从业者,都能从中有所收获。学习过程中,大家有任何疑问、困惑,或者不同的见解,都可以在评论区交流探讨,我们一起进步、一起成长,感谢大家的支持! 一、MySQL 是什么?—— 后端开发的“数据管家”在后端开发的世界里,无论你是开发简单的注册登录接口、复杂的商品管理系统,还是核心的订单交易系统,都离不开一个核心组件——数据库。而在众多数据库中,MySQL 凭借其开源免费、高效稳定、兼容性强的特点,成为了后端开发者的首选,更是Java后端开发中最常用的关系型数据库,没有之一。 ✅ 核心定义MySQL 是一种 关系型数据库管理系统(RDBMS),它基于关系模型设计,使用 SQL(结构化查询语言)作为数据的存取和管理工具。简单来说,MySQL 就像一个“智能文件柜”,它把杂乱无章的数据,按照固定的规则(表格)整理存放,并且表与表之间通过特定的关...
08第八章:索引深入理解及高级运用(结合常见优化问题讲解)
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
对于后端开发者而言,MySQL 索引是提升数据库性能的核心手段,也是面试中的高频考点。很多初学者虽然知道“要建索引”,但往往陷入“索引建得越多越好”的误区,甚至建了索引却发现查询速度没提升,反而拖慢了写入性能。今天这篇文章,我们就从零深入拆解索引的核心逻辑、适用场景、优化技巧,结合实际开发中的常见问题,帮你真正吃透索引的高级运用,避开所有坑。 一、为什么要创建索引(Index)?—— 数据库的“目录”有多重要我们先从最基础的问题入手:为什么需要索引?其实一句话就能理解:索引就是数据库表的“目录”,就像我们看书时,不用逐页翻找,通过目录就能快速定位到目标章节;数据库查询时,有了索引,就不用进行全表扫描(逐行查找数据),能直接定位到符合条件的记录,极大提升查询效率。 ✅ 索引的核心优点 提升检索速度:这是最核心的作用,尤其是表中数据量达到万级、十万级甚至百万级时,索引能将查询时间从“秒级”压缩到“毫秒级”。 加速表连接:多表关联查询(JOIN)时,索引能快速匹配两个表中的关联字段,避免两个表都进行全表扫描,减少关联耗时。 优化排序和分组:当查询中包含 ORDER BY(排序)、GRO...
从零起步学习MySQL 第十一章:MySQL中常见的索引失效情况原因分析及解决方案
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
前言: 在 MySQL 数据库中,很多时候 SQL 的 CRUD 性能极差,并不是因为数据量真的大到无法处理,而是开发者对索引底层实现不够透彻,写出了让索引 “失效” 的 SQL。本文就带你一次性搞懂:MySQL 中最常见的 6 类索引失效场景,从本质原因到检测方式,再到可直接落地的解决方案,无论是日常开发优化,还是后端面试,都能直接用上。 1)左 / 左右模糊匹配(LIKE 的 % 在左侧或两侧)示例12SELECT * FROM users WHERE name LIKE '%smith';SELECT * FROM users WHERE name LIKE '%smi%'; 为什么失效(本质)InnoDB 的 B+ 树索引是按字段值有序存储的,只有前缀匹配才能利用索引的有序性做快速范围查找。 当 LIKE 以 % 开头时,查询需要匹配 “任意前缀 + 目标串”,B+ 树无法定位到连续的有序区间,只能走全表扫描或全索引扫描,索引直接失效。 如何检测执行 EXPLAIN 查看执行计划: type = ALL(全表扫描) 或 typ...
从零起步学习MySQL 第十三章:MySQL 事务详解:原理、特性、并发问题与隔离级别
发表于2026年03月14日|更新于2026年03月14日|八股面试Mysql
在日常开发中,你是否遇到过这样的场景:测试库中几百条数据查询飞快,上线后生产库几十万条数据,相同的 SQL 突然慢到超时?90% 的情况下,问题都出在索引上。 一、索引的本质:不止是 “目录” 那么简单1.1 索引到底是什么?用一个最通俗的比喻:索引就像一本书的 “目录”。 如果没有目录(索引),要找某段内容,你需要从第一页翻到最后一页(全表扫描);有了目录(索引),可以直接定位到目标章节,效率提升成百上千倍。 从技术角度来说,MySQL 的索引(InnoDB 引擎)底层基于B + 树结构实现: 非叶子节点存储索引键和指针,用于快速定位; 叶子节点存储完整的索引数据(主键索引还会存储整行数据); 所有数据都在叶子节点,且按顺序排列,天然支持范围查询。1.11聚簇索引与非聚簇索引 在 MySQL InnoDB 中,索引的核心区别可以用两句话概括:聚簇索引 = 索引就是数据本身,非聚簇索引 = 索引是索引,数据是数据。 聚簇索引本质就是主键索引,一张表只能存在一个,它最大的特点是数据行和索引存储在一起,索引的叶子节点直接存储完整的一行数据。可以把它比作一本按页码排序的书,找到页码...
1…910
avatar
Lumjiel
文章
98
标签
40
分类
15
Github
公告
欢迎来到我的blog
最新文章
日记 - 2026-03-31
日记 - 2026-03-312026年03月31日
日记 - 2026-03-30
日记 - 2026-03-302026年03月30日
日记 - 2026-03-29
日记 - 2026-03-292026年03月29日
日记 - 2026-03-28
日记 - 2026-03-282026年03月28日
日记 - 2026-03-27
日记 - 2026-03-272026年03月27日
分类
  • AI追踪3
  • Linux5
  • c语言10
  • database1
  • datastruct11
  • python2
  • 八股面试26
    • Java基础4
标签
AI追踪LinuxC语言数据库面试Python数据结构复盘杂谈日记真题日复盘工具探索社交反思技术教训时间管理技术探索工具效率生活智慧消费观生活记录工具反思认知转折信息源技术突破生活决策生活感悟技术学习收入突破家庭关系宿舍生活项目反思状态反思情绪记录前端调试社交焦虑技术反思工具折腾内容运营焦虑情绪
归档
  • 三月 2026 98
网站信息
文章数目 :
98
本站总字数 :
232.3k
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2021 - 2026 By Lumjiel