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存储引擎数据页结构
热门推荐
树莓派入门指南:硬件准备与系统安装
《胡闹厨房2》官方版
《夏商周书画美学研究》
生蚝和海蛎的区别?哪种好吃?
电动车充满电后可否不拔充电枪?充电桩使用全攻略
一种利用无菌技术延长食品保质期的方法与流程
探寻秦朝女性的名字之谜——揭秘古代女性的文化符号
浅评《美国队长4:勇敢新世界》:既不勇敢,也无新世界
沈阳站去沈阳南站怎么走 沈阳南站到沈阳站地铁怎么坐
读冯至,体悟生命的诗与思
增压设备的工作原理与维护保养
都市人的植物治愈指南:科学思维让园艺不再玄学
北京信息科技大学怎么样?专业设置与学科评估全解析
江苏省黄桥中学:百年征程弦歌不辍,滋兰树蕙再绽芳华
探索人工智能在数学教育上的应用——使用大规模语言模型解决数学问题的潜力和挑战
最新出国留学中学榜出炉:民办学校崛起,上海上榜数领跑
姨妈期间情绪不稳定是什么原因
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
社交媒体如何影响心理健康?这份指南帮你建立健康使用习惯
苏沐橙:《全职高手》中的荣耀女神
燕赵大地河北省,河北旅游攻略,河北省优质景点推荐
皇帝成长计划2郑庄公本纪通关攻略全解析与称霸技巧深度指南
股票除权除息的原理及其在投资中的应用
如何改善睡眠质量来缓解抑郁症?了解影响睡眠的因素及调整方法
低空经济时代:飞行汽车的定义、挑战与未来展望
如何拥有立体唇珠?微整填充、手术丰唇全解析
如何运用AI脚本实现高效的公众号内容创作
卡式炉安全问题引热议,户外露营还能放心用吗?
冷链物流标准化,从全球到国内共促行业高质量发展
设备保养计划自动生成?这5个功能你必须知道