Mysql常见的存储引擎有什么,有什么区别
常见的存储引擎有MyISAM,InnoDB,MEMORY,MERGE.今天我们就分别介绍一下,
MyiSAM存储引擎特点
- 不支持事务,不支持外键
- 每个myisam在磁盘存储成3个文件文件名和表名相同,
- .frm,存储表定义
- .MYD,存储数据
- .MYI,存储索引
- .frm,存储表定义
- 数据文件和索引文件放到不同的目录,平均分布IO,获得更快地的速度
- 支持3种不同的存储格式
- 静态表
- 静态表的字段都是非变长字段,这样每个记录的长度是固定,这个方式的优点在于存储速度非常快,容易缓存,而且表发生损坏后也容易修复,缺点就是占空间.
- 动态表
- 包含变长字段,记录不是固定长度,优点就是占用空间少,但出错恢复起来很难修复
- 压缩表
- 由myisampack工具常见,占据非常小的磁盘空间,因为每个记录是被单独压缩的,所以只有非常小的访问开支
- 静态表
InnoDB存储引擎
- 支持具有提交,回滚和崩溃恢复能的事物安全
- 支持自动增长列
- 支持外键约束
- 数据的物理组织形式聚簇表,所有的数据按照主键来组织,数据和索引放在一起,都位于B+树的叶子节点上
- 存储表和索引也有两种方式
- 使用共享表空间存储,表的表结构保存在.frm文件中,数据和索引保存在innnodb_data_home_dir和innodb_data_file_path定义的表空间,可以是多个文件
- 使用多表空间存储,表结构放在.frm文件中,但是每个表的数据和索引单独放在.idb中,分区表的话,每个分区对应单独的idb文件,文件名是表名+分区名
- 使用共享表空间存储,表的表结构保存在.frm文件中,数据和索引保存在innnodb_data_home_dir和innodb_data_file_path定义的表空间,可以是多个文件
Memory存储引擎
- 支持的数据类型有限制,比如不支持text和blob类型
- 每个memeory表只实际对应一个磁盘文件,格式.frm
- 访问速度快,因为数据都在内存中,默认使用HASH索引
Merge存储引擎
- 是一组MyiSAM表组合,这个鞋myisam表结构必须完全相同
- 本身没有数据,对他操作实际上是对内部Myisam表操作
- merge磁盘存储两个文件,一个是.frm存储表定义,一个是.mgr文件包含组合表的信息
