Mysql存储引擎有哪些?如何选择存储引擎?

Mysql自从5.5版本以后,默认采用InnoDB存储引擎,那么,除InnoDB外,Mysql还有没有其他存储引擎?我们可以用 SHOW ENGINES查询引擎(只需关注4种常用引擎即可:InnoDB、MyISAM、MEMORY、MRG_MYISAM),如果你想查看当前表的存储引擎,使用命令show create table table名即可。

Support列的值表示某种引擎是否能够使用,YES表示可以使用,NO表示不可以使用,DEFAULT表示当前默认存储引擎。

1)InnoDB
InnoDB是一个健壮的事务型存储引擎,是5.5以后默认存储引擎,也是最常用的存储引擎之一。它提供了事务安全(ACID兼容)表,支持外键引用完整性约束,支持提交、回滚和紧急恢复功能来保护数据,同时还支持行级锁定。适用如下场景:

更新密集的表:适合处理多重并发的更新请求

事务:支持事务

自动灾难恢复:与其它存储引擎不同,InnoDB表能够自动从灾难中恢复

外键约束:Mysql中支持外键的存储引擎只有InnoDB

自动递增:支持自动增加列AUTO_INCREMENT属性

2)MyISAM
MyISAM表是独立于操作系统的,所以移植方便,优势是访问速度快但是缺陷就是无法处理事务。支持3种不同的存储格式,分别是静态(固定长度)表、动态表、压缩表,其中,静态表是默认的存储格式。

静态表:字段是非变长字段,记录是固定长度的(长度不足补空格),优点是存储非常迅速,容易缓存,出现故障容易修复;缺点是占用的空间通常比动态多(补空格)。
说明:MyISAM引擎在读取数据的时默认会把字段后面的空格去掉,如果不注意会把数据本身带的空格也会忽略。

动态表:字段是变长字段,记录不是固定长度的,优点是占用的空间相对较少,缺点是频繁的更新和删除记录会导致碎片产生,所以要定时进行碎片整理:定期执行OPTIMIZE TABLE语句或myisamchk -r命令来改善性能,所以出现故障时恢复相对困难。

压缩表:由myisam工具创建,占据非常小的磁盘空间。因为每个记录是被单独压缩的,所有只有非常小的访问开支。

MyISAM存储引擎适用场景:

选择密集型的表:MyISAM存储引擎在筛选大量数据时非常迅速(提供高速存储和检索以及全文搜索能力)

插入密集型的表:MyISAM的并发插入特性允许同时选择和插入数据,所以MyISAM存储引擎很适合管理邮件或Web服务器日志数据等

MyISAM存储引擎和INNODB存储引擎的对比:

MyISAM不支持事务    INNODB支持事务

MyISAM不支持外键    INNODB支持外键

MYISAM加锁读取        INNODB不加锁读取    

MyISAM支持全文索引    INNODB不支持全文索引

MyISAM查询速度更快    INNODB添加、修改、删除速度更快
发布了224 篇原创文章 · 获赞 34 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_39309402/article/details/105202524