MySql引擎

时间:2024-04-07 19:26:24

Mysql的引擎有好几种,其中Innodb和Myiasm最为常用

存储引擎在mysql里是插拔式的,
什么是插拔式?
所谓的插拔式就是可以配置的,我们在建表的时候,可以在建表语句上加上一句Enginee=Myiasm,就表示要建的表使用的存储引擎为Myiasm

从上面一点可以看出,mysql的存储引擎是表级别的,存储引擎是可以由第三方公司来开发,自mysql5.5以后,mysql默认的存储引擎为innodb

聚集索引与非聚集索引

所谓的聚集索引就是索引文件跟数据文件存放在同一个文件里
非聚集索引就是索引文件跟数据文件存放在不同的文件里
从下面的图片可以看到,Myiasm的表是有3个文件组成,其中frm文件是表定义文件,无论是innodb或者是myiasm,它们都有frm文件,myd文件是myiasm的数据文件,是用来存放数据的,myi是myiasm的索引文件,
ibd是innodb的数据和索引的存储文件
MySql引擎
从存储引擎的索引存放格式来看,myiasm的每一个索引,其地址都是指向数据区所在的地址,而innodb则有点不一样,innodb里默认是以id作为主索引,就是当我们没有建id主键列的时候,innodb都会创建出一个隐藏的id主键列作为索引,在这个id主键列的索引树上,其叶子节点上保存着当前节点的数据,当我们建了一个name的非主键索引时,innodb会建一个name的索引树,然后在叶子节点的每个节点上保存的是id索引树的地址
所以当我们用非id作为索引时,innodb需要检索两遍,而myiasm自需要检索一遍,所以在读多写少的表可以用myiasm作为存储引擎
MySql引擎

总结:

1、mysql的存储引擎是表级别的,可以在建表时加上Enginner = 引擎名称来指定表的存储引擎
2、Myiasm的索引是非聚集索引,innodb的索引是聚集索引
3、读多写少建议使用Myiasm存储引擎,写多读少建议使用innodb