MySQL索引数据存储原理详解
创作时间:
作者:
@小白创作中心
MySQL索引数据存储原理详解
引用
1
来源
1.
https://www.cnblogs.com/grasp/p/18265172
MySQL索引是数据库性能优化的关键技术之一。本文将深入探讨MySQL索引的存储原理,包括索引的分类、存储结构、InnoDB和MyISAM两种存储引擎的对比、数据页结构、行格式、B+Tree索引的原理等多个方面。
索引的分类
从存储结构上划分
- BTree索引(B+tree,B-tree)
- 哈希索引
- FULLINDEX全文索引
- RTree索引
从应用层次上来划分
- 外键索引:InnoDB是MySQL目前唯一支持外键索引的内置引擎
- 普通索引(INDEX)
- 唯一索引(UNIQUE INDEX)
- 主键索引 (PRIMARY KEY)
- 单列索引
- 组合索引(联合索引)
- 全文索引 (FULLTEXT INDEX)
- 空间索引(SPATIAL INDEX)
从表记录的排列顺序和索引的排列顺序是否一致来划分
- 聚簇索引(聚集索引,一级索引):表记录的排列顺序和索引的排列顺序一致
- 非聚簇索引(非聚集索引,二级索引,普通索引):表记录的排列顺序和索引的排列顺序不一致
InnoDB和MyISAM存储引擎的对比
- MyISAM:非事务安全,支持全文类型索引,效率较高,适合小型应用
- InnoDB:事务安全,支持行级锁,适合大量insert和update操作
MySQL存储原理
索引页的结构
InnoDB的逻辑存储结构由TableSpace、Segement、Extent和Page组成。Page是InnoDB磁盘管理的最小单位,大小默认为16KB。
InnoDB数据页结构
数据页结构包括File Header、Page Header、Infimum+Supremum、User Records、Free Space、Page Directory和File Trailer。
InnoDB行格式
行格式主要包括Compact、Redundant、Dynamic和Compressed。其中Compact是最常用的行格式,从MySQL 5.1版本开始默认使用。
B+Tree索引的原理
B+Tree结构中,所有数据都存储在叶子节点,非叶子节点只存储索引。这种设计可以提高查询效率,因为每次磁盘IO都可以获取到完整的数据。
索引为何选择B+Tree
B+Tree结构可以有效减少磁盘IO次数,提高查询效率。即使在千万级别的数据表中,B+Tree的树高也相对较低,通常只需要几次磁盘IO就可以获取到数据。
索引实战
使用EXPLAIN关键字可以分析SQL查询的执行计划,帮助优化查询性能。通过EXPLAIN可以查看查询的类型、使用的索引、扫描的行数等信息。
图 4 InnoDB引擎结构示意图
图 5 InnoDB存储引擎数据页结构
热门推荐
《看门狗》:用科技改写命运的黑客之旅
尿毒清真的能降肌酐吗?它能不能长期吃?
掌握正确腹肌训练技巧,轻松拥有六块腹肌!
仰卧起坐真的会伤脊椎?真相揭秘!
秋冬练腹肌,学运动员这样吃!
卷腹运动真的能保护你的脊椎吗?
蒙特利尔必做之事探索魁北克的心脏地带
世界狂犬病日:市疾控中心教你如何防范狂犬病
蝙蝠狂犬病传播途径揭秘!
菜鸟驿站春节不打烊!158城全覆盖,营业时间有调整
CS2 AK47控后坐力秘籍大公开!
CF手游AK47-苍龙:后坐力到底有多猛?
新版AK47上线,教你轻松掌控后坐力!
《熊出没之丛林总动员》:一部动画片引发的环保热潮
中央网信办:企业如何防范WannaCry勒索病毒?
如何确保AI系统的安全性与可靠性?
张家界三下锅:从明朝流传至今的土家美味
张家界必打卡:土家三下锅&湘西腊肉
青岛人对海参的执念
南澳岛:汕头最火打卡地,你去过吗?
南澳岛:广东最大海岛的自然人文双绝
DDoS攻击频发,企业如何自保?
狂犬病疫苗接种指南:保护你我他
狂犬病新规出台:伤口处理和疫苗接种有新变化
狂犬病疫苗:医生推荐的最佳预防方案
《归去来兮辞》:陶渊明的语言艺术巅峰
陶渊明的自然美学:逃离都市,回归田园?
洛阳三日游:龙门石窟、老君山深度游攻略
冬日洛阳三日游:从龙门石窟到洛邑古城
洛阳三日游:打卡热门景点榜