MySQL常用存储引擎
MyISAM:
- MySQL默认数据库引擎,不支持事务、外键,速度快,用于无事务要求或者select、insert为主的场景。
- 会创建3个文件.frm(存储表定义),.MYD(MYData,存储数据),.MYI(MYIndex,存储引擎)。
- 支持3中存储格式,静态(固定长度)表,动态表,压缩表。
- 静态表是默认格式,固定长度速度快,但是占空间大。记录长度不够时会用空格填充,读取数据时会清除空格,存在吃尾部空格的情况。
- 动态表包含变长字段,记录不是固定长度,占用空间少,但是频繁更新和删除会产生随便,需要定期整理,并且在出现故障时恢复比较困难。
- 压缩表由mysiampack工具创建,空间小。
InnoDB:
- 提供了具有提交、回滚、崩溃恢复能力的事务安全,但是会占用更多空间用以保存数据和索引。
- 支持外键,创建外键的时候,要求父表必须有对应的碎银,子表在创建索引的时候也会自动创建对应的索引。
- 存储表和索引有两种方式,
- 使用共享表空间存储,表结构保存在.frm文件中,数据和索引在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以是多个文件。
- 使用多表空间存储,表结构保存在.frm文件中,每个表的数据和索引单独保存在.ibd中。
MEMORY:
- 使用存在于内存中的内容来创建表,访问速度快,默认使用HASH索引,服务关闭数据会丢失。
- 用于内容变化不频繁的代码表,或者作为统计操作的中间结果表。
MERGE:
- 一组MyISAM表的组合,这些表必须结构完全相同。
- MERGE表本身没有数据,CRUD时其实操作的是内部的MyISAM表。
- Drop只是删除MERGE的定义,对于内部表没有影响。
posted on 2018-10-31 08:58 Lv Jianwei 阅读(2369) 评论(0) 编辑 收藏 举报