-
INDEX MERGE
-
索引的种类
-
- B+树索引的类型及使用
-
- 普通索引
-
唯一索引
-
前缀索引
-
多列联合索引
-
全文索引
-
- 全文索引不得不说的事
-
哈希索引
-
索引信息分析
-
- 关于Cardinality
-
Cardinality的更新策略
-
Cardinality的计算方式
-
索引的使用原则
-
- 离散度
-
最左匹配原则
-
- like和_的最左匹配方式
-
联合索引的最左匹配方式
-
其他无法使用索引场景
-
无法使用索引中的特例
-
- <> 和not in特例
-
最左匹配原则特例
-
总结
========================================================================
| MySQL系列文章 | 飞机票 |
| — | — |
| MySQL索引为何选择B+树 | 登机入口 |
| 深入分析MySQL索引 | 登机入口 |
| MySQL执行计划EXPLAIN详细说明和举例 | 登机入口 |
| MySQL中事务以及MVCC的实现原理 | 登机入口 |
| 深入分析MySQL中锁并详解幻读问题 | 登机入口 |
| select语句和update语句的执行流程 | 登机入口 |
| InnoDB引擎存储结构及Change Buffer和Double Writer分析 | 登机入口 |
| InnoDB中四种行格式分析及对varchar和char的限制 | 登机入口 |
===============================================================
上一篇,我们介绍了MySQL为什么最终选择了B+树来作为索引存储的数据结构,想要详细了解,请点击这里。本文将为大家介绍一下B+树在MySQL中是如何落地的,本文主要会对比常用的两种存储引擎InnoDB和MyISAM来进行比较分析。
===================================================================
MySQL的存储引擎是插件式管理的,我们可以自由选择,MySQL中常用的存储引擎有很多种,但是最常用的就是InnoDB和MyISAM,其他存储引擎不在本文内容之列,就不做过多介绍,主要简单介绍一下InnoDB和MyISAM存储引擎。
MyISAM存储引擎不支持行级锁,只有表级锁;不支持事务,也不支持外键,主要面向OLAP应用,是MySQL数据库5.5.8之前版本默认的存储引擎,MyISAM适用于不需要关心事务,读多写少的场景。每张MyISAM表在磁盘上会创建三个文件:.frm,.MYD和.MYI,其中.frm文件为表结构,每个存储引擎都会有这个文件,是用来存储表结构的,.MYD文件用来存储数据,.MYI用来存储索引,也就是说MyISAM的数据和索引是分开存储的,这一点和InnoDB不一样。
在MySQL5.0之前,MyISAM默认支持的表只有4GB,如果要修改默认表大小的话,需要修改参数MAX_ROWS和AVG_ROW_LENGTH的大小,不过这一点在MySQL5.0之后得到了改善,默认大小为256TB,这个大小在绝大部分应用应该都是可以满足要求的。