您的位置:首页 > 数据库 > MySQL

数据库-->浅谈Mysql不同存储引擎之间的区别

2019-07-17 15:25 225 查看

精选30+云产品,助力企业轻松上云!>>>

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索引
-- 顺序存储

持续更新中...

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MyISAM MySQL InnoDB BTree