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存储引擎数据页结构
热门推荐
几乎所有可引起手麻的疾病,都在这里了
灭鼠方法那么多,哪种最有效?一篇文章告诉你答案!
百岁母亲五代同堂:118桌盛宴见证家族和睦
106岁厨师的长寿秘诀:9个简单习惯,助你健康活过百岁
刘敏超:医院数字化转型呼唤这样的信息系统
深度游,玩转香港新体验
从豆浆机事件到蓝V总教头:海尔如何玩转社交媒体营销
鱼刺卡喉1个月 扁桃体险些不保
一根鱼刺,X光、CT出动?这些土方法伤害极大
让身体素养运动成为孩子的“新宠”!
青少年沉迷手机背后的心理密码
“紫禁杯”获奖班主任教你帮娃戒手机瘾
2025蛇年七言春联精选及创作指南
“观音山上观山水”:一场跨越八年的对联征集
高血压管理中的智能化监控与数据分析应用探索
窦唯父女音乐合作:从《潸何吊》到《空中飞人》
甲午中日战争:百年后的反思与启示
文化心理学:揭秘东西方心理密码
文化创新激活城市活力:杭州的实践与探索
寄美国国际快递哪家好?全面指南与建议
如何有效去除透明胶带留下的粘胶?这些方法的持久性和效果如何?
贴纸留下的胶如何擦掉?去除胶痕的方法有哪些?
乔布斯演讲的秘密:梅拉宾法则的完美演绎
2025年创业风口:零售出海与数字消费
2025年创业融资新趋势:传统渠道遇冷,众筹与企业债成新出路
如何与懒惰媳妇和谐相处?
窦唯撞脸黄渤引热议:两位实力派的"接地气"大不同
窦唯新专辑《文王贴》:古风实验音乐再登巅峰
《山水清音图》:窦唯的音乐山水
窦唯阿那亚书乐会展:艺术追求与音乐探索