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存储引擎数据页结构
热门推荐
陈都灵《花千骨》一上映,被骂了7年的刘亦菲,终于松了一口气!
脑电+多模态,情绪识别的新纪元?
深度学习背后的数学魔法揭秘
胃食道逆流怎么办?从摄取“好油”开始改善
情感分析:市场调研的秘密武器
情感分析:心理健康评估的新利器
新手爸妈必看:破解宝宝拒奶谜团
苦味食物里的护肝密码:抱子甘蓝和柑橘皮的健康之选
肝病患者的营养补充指南:从蛋白质到维生素,你需要知道这些
兰州市二院肝病研究所:专业守护肝脏健康
精神分裂症:诊断方法+治疗方式+最新研究进展
赵丽颖的“飞天”之路:从古偶到实力派的蜕变
牛黄上清片治疗口腔溃疡:效果如何?怎么用?
18岁必读神作,让你秒变学霸!
18岁生日祝福,让你的朋友圈炸起来!
青春期男孩的情感表达困境与突破
中国合伙人表达了什么
《南京条约》:清朝外交的转折与阵痛
《南京条约》与《马关条约》:中国近代史上的两座“里程碑”
甲状腺疾病饮食指导:不同类型的甲状腺结节如何科学饮食?
管理部门仓库在古代叫什么
如何量化分析市场情绪的方法
文财神vs武财神:谁是你的财运守护神?
财神像摆放,你真的懂吗?
有了高血压,不想吃降压药,看看中医怎样调理
包点行业的消费者需求变化趋势是什么?(包点市场前景分析)
自制牛肉干:从选材到成品的完整指南
番茄土豆烧牦牛:一道简单美味的下饭菜
牛羊碳水塞到顶,吃货咖们才懂的硬核疆味美食
【新疆的今昔】“来”与“往”中的新疆滋味