mysql数据库各存储引擎及区别

Mysql数据库一共几种存储引擎? 通过查询命令  show engines 可以查看数据库的存储引擎如下图:


图1

可以看到mysql数据库有很多种存储引擎,但是我们平时工作中使用接触到的或者面试被问到的主要有3种:

1.InnoDB  存储引擎

首先 InnoDB存储引擎是mysql数据库的默认存储引擎,也是事务性数据库的首选引擎,支持事务的ACID。InnoDB 的默认隔离级别是RR,使用Next-Key Lock算法避免幻读,达到Serializable隔离级别。什么是RR呢?看下图2,RR也是mysql数据库默认的隔离级别。

图2

InnoDB存储引擎的特点:

1.支持事务。支持事务的四种隔离级别,是一种有commit、rollback和crash recovery capabilities(崩溃修复能力)的事务安全型表。

2.支持行锁和外键约束,支持并发写。

3.支持自动增长列。AUTO_INCREMENT自增长的字段,存储引擎InnoDB中必须包含只有该字段的索引。

4.InnoDB支持共享表空间存储和多表空间存储。使用共享表空间存储时,表结构保存在.frm文件中,数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以是多个文件;使用多表空间存储时,数据和索引单独保存在.ibd中。

2.MyISAM 存储引擎

1.不支持事务及外键约束。

2.MyISAM表支持静态表、动态表、压缩表。其中静态表是默认的存储格式,具有存储迅速,易缓存的优点,缺点是占用的空间比动态表多,动态表则占用空间相对较少,但是频繁的更新或删除记录会产生碎片,压缩表占据的磁盘空间非常小,由于每个记录是被单独压缩的,因此访问开支也非常小 。

3、每张使用MyISAM引擎建立的表对应磁盘中的3个文件,文件名和表名相同,扩展名分别为.frm(存储表定义)、.MYD(存储数据)、.MYI(存储索引) 

3.MEMORY  存储引擎

1、不支持事务、不支持外键

2、将数据存储在内存中,访问速度非常快

3、支持HASH和BTREE索引,默认使用hash索引

4、每个memory表只对应一个格式是.frm的磁盘文件

你可能感兴趣的:(mysql数据库各存储引擎及区别)