今天咱们简单了解下mysql的存储引擎
概述
Mysql在5.1之前版本中,存储引擎是需要在msyql安装中必须和mysql一起被编译同时安装的。之后的版本中,基本上完全是通过接口实现。从5.1开始,mysql对结构体系做了较大改造,引入了新的概念:插件式引擎结构,让存储引擎和sql层各自更为独立,耦合更小。让加载和一出更为灵活。
插件式存储引擎主要包括MyiScm,innodb,NOBCluster,matria, Memory,Merge等,较为广泛的是 MyIsam和Inodb两种。Myisam是mysql最早的。Innodb是第三方公司研发的,特点是支持事务控制。其他的如NDB cluster也有事务,但是主要是用于分布式环境,术语share nothing的分布式数据库存储引擎。
存储引擎
MyIsam
myISAM存储引擎的表在数据库中有三部分构成
分别是:
如:tb_demo表
- tb_demo.frm 存储表定义
- tb_demo.myd 存储表数据
- tb_demo.myi 存储索引
MyISAM支持的索引有三种类型
- B-Tree索引所有索引节点按照平衡树的数据结构存储
- R-Tree 主要用于存储空间和多维数据的字段索引
- Full-test 全文索引存储结构是b-tree,解决linke查询效率底问题
MyISAM无法处理事务,所以对事务请的表,不能使用myisam存储引擎,但是一些情况还是很MYISAM的
MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。
InnoDB
Innodb之所以这么受欢迎,主要是有以下特点:
1支持事务
2数据库多版本读取
3锁定机制的改进,实现了行锁
4实现外键
5物理存储方面
物理结构分为两大部分,数据文件和日志文件
一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。
NDB
NDB存储引擎也叫NDB Cluster存储引擎,主要用于Mysql Cluster分布式集群环境, Cluster是从5.0版本开始的。
主要构成有三部分
1负责管理各个节点的Mange节点主机
包括集群配置,启动关闭各个节点,以及实施数据库备份恢复等。manage节点是必须最先配启动的节点
2Sql等的sql服务节点
是我们常说的Mysql server,主要负责实现一个i额和数据库在存储层之上的事情,不如连接管理,queyr优化和响应,cache管理,之后的工作就给了NDB节点处理。
3Stirage层的NDB数据节点
NDB是内存式存储一你去那个,所有数据二话索引数据都load到内存中,但也会将数据持久化到存储设备上。主要是实现底层数据存储功能,保存Cluster的数据
Memory
使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。获得速度的同时也带来了一些缺陷。它要求存储在Memory数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。
若要查看咱们数据库的版本以及使用的默认存储引擎基本命令如下:
当前版本
show variables like 'version';
查看默认存储引擎
show engines ,带有default是默认
小结:
Mysql存储引擎有多种,这里只是简单的介绍了常用的两种情况,其他版本的还的大家多多去了解