MyISAM存储引擎
缺点:不支持事务、不支持外键
优点:访问速度快,支持全文索引、压缩索引
应用场景:对事务完整性没有要求或者以select/insert为主的应用基本上可以用这个引擎创建表
InnoDB存储引擎
缺点:相对MyISAM引擎写的处理速率会差一些,并且会占用更多的磁盘空间以保留数据和索引
优点:支持事务、支持自增长列、支持外键约束
Memory存储引擎
缺点:一旦服务关闭,表中数据就会丢失
优点:Memory存储引擎使用存在于内存中的内容来创建表,每个memory表对应一个.frm磁盘文件。访问速度非常快,默认使用hash索引,可选择B-tree索引
Merge存储引擎
-- 一组MyISAM表的组合
InnoDB 和 MyISAM对比
-- 事务:MyISAM不支持事务,InnoDB支持事务以及外键约束
-- 性能:MyISAM的表强调的是性能
-- 行数保存:InnoDB不保存表的具体行数,select count(*) from table ,InnoDB要扫描整张表来计算多少行,而MyISAM只需要读取保存的数据即可。
当count(*)包含where条件时,两种类型操作一样
-- 索引:对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是MyISAM表中可以和其他字段建立联合索引
MyISAM支持全文索引、压缩索引,InnoDB不支持
MyISAM的索引和数据是分开的,并且索引有压缩而InnoDB的索引和数据是金币捆绑的
-- 服务器数据备份:InnoDB必须导出SQL来备份,而MyISAM数据恢复速度快,MyISAM的数据是以文件的形式存储,
跨平台数据转移方便,InnoDB是拷贝数据文件、备份binlog或者用mysqldump,数据量大比较麻烦
-- 锁的支持:MyISAM只支持表锁,InnoDB支持表锁、行锁
InnoDB的行锁,只有在where条件是主键有效,非主键会锁全表
索引类型
B-Tree索引
-- 从根节点到枝节点,最后才能访问到页节点
Hash索引
-- 检索一次定位,查询效率非常高
-- 不支持‘like’模糊查询
ISAM索引
-- 顺序存储
持续更新中…