mysql数据目录
1.实用 SHOW VARIABLES LIKE’datadir’; 查看数据库文件存储位置
2.在目录下面,每个数据库有独立的文件夹,里面存储了该数据库表的结构定义和索引数据信息
mysql存储的大概原理
1.数据是存储在表空间里面的, 数据本身就是索引, 所以数据存储是看索引的存储(表空间文件 表名.ibd)
- 每个索引的建立会产生两个段, 为了能够达到顺序IO,一个段用于存储非叶子结点,一个段用于存储叶子结点
- 每个段是由区组成的,段只是一个抽象概念,区又是由页构成的的一个区是 16kb(页)*64页
- 段分配单位一般是以区来分配的,因为按照页来分太散了,无法顺序IO影响读写速度
mysql执行方法(expalin 的 type)
const 一般指的是使用 唯一索引检索的时候(主键/唯一索引,null是特殊情况,null值控制不了唯一 比如写 is null,一般确认只可能检索一条记录情况)(等值查询)
ref 一般指的是二级索引,而且不是唯一索引情况,并且是等值查询(等值查询)
ref_or_null 一般是ref情况在 or 个 is null的情况 (等值查询 附加 or is null)
range 一般是指的字段不是等值查询,比如说使用 in > < like带前缀 这种进行查询(范围查询)
index 一般在联合索引情况发生, 查的字段只查联合索引上的字段,然后查询条件又没走索引,直接扫描联合索引的情况
all 直接扫描聚簇索引
注意:
- 一般来说一个sql只会走一个索引,其他后面多余的where条件通过回表进行二次过滤,具体执行方法取决于被选中的那个索引
- 如果出现where条件使用到多