MysQL采用插件式存储引擎结构,也就是说支持热插拔,更改底层存储引擎时不用停止服务就可以完成,MySQL作为一个开源数据库,除自带的MyISAM还有很多其他存储引擎可供替换,本文主要对这些存储引擎做一个简单的介绍。
1、MyISAM存储引擎
1)MyISAM支持三种类型的索引:B-Tree索引、R-Tree索引、Full-text索引
注:B-Tree索引中参与一个索引的所有字段的长度纸盒不能超过1000字节
2)MyISAM的数据存放格式分为:静态固定长度、动态可变长度及压缩三种格式
2、InnoDB存储引擎
支持事务安全(4个级别)
数据多版本读取
锁定机制的改进:行锁,通过索引来完成
实现外键
分为独享表空间和共享表空间,后者的数据文件可以设置为固定大小和可动态扩展两种形式
InnoDB可以使用文件系统还可以使用裸设备
3、NDB Cluster存储引擎
主要用于MySQL Cluster分布式集群环境
MySQL Cluster就是在无共享设备的情况下实现的一种内存数据库Cluster环境
MySQL Cluster的环境主要包括:
1)负责管理各个节点的Manager节点主机:管理节点负责整个Cluster集群中各个节点的管理工作,包括集群的配置,启动关闭各节点,以及实施数据的备份恢复等
2)SQL层的SQL服务器节点(MySQL Server):负责一个数据库在存储层之上的所有事情
3)Storage层的NDB数据节点(NDB Cluster):NDB是一个内存式存储引擎,会将所有的数据和索引数据都加载到内存中,也会将数据持久化到存储设备上
4、Merger存储引擎
对结构相同的MyISAM表通过一些特殊的包装对外提供一个单一的访问入口,从而达到减小应用复杂度的目的
5、Memory存储引擎
将数据存储在内存中的数据引擎
页级锁定
6、BDB存储引擎
全称BerkeleyDB存储引擎
一个.frm文件和一个.db文件
页级锁定
事务安全
7、FEDERATED存储引擎
主要用来提供对远程MySQL服务器上面的数据的访问接口,当创建一个FEDERATED表的时候,在本地仅仅创建了表的结构定义信息文件,所有数据均实时取自远程MySQL服务器上面的数据库
8、ARCHIVE存储引擎
主要用于通过较小的存储空间来存放过期的很少访问的历史数据
不支持索引
包含一个.frm和一个.ARZ数据压缩文件和一个.ARM的元数据信息文件
不支持删除修改操作,仅支持插入和查询
行级锁定
9、BLACKHOLE存储引擎
写入任何信息都是有去无回
可以用于空间受限的数据迁移中转,利用binlog
10、CSV存储引擎
可以先在数据库中建立一张CVS表,然后将生成的报表信息插入该表,即可得到一份CSV报表文件了
不支持索引