MySQL存储引擎简介-MyISAM和InnoDB的区别

上篇文章《MySql逻辑结构简介》我们聊到了存储引擎,可以说MySQL可插拔的多元化存储引擎给我们的使用者带来了很灵活的选择。

这篇文章我们来聊一下目前主流的两种存储引擎MyISAM和InnoDB的区别。

  MyISAM InnoDB
外键 不支持 支持
事务 不支持 支持
锁表 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作

缓存

只缓存索引,不缓存真实数据

不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响

占用空间  

表空间占用

表空间占用

关注点

性能,查询速度快

事务

存储限制

256TB

64TB

数据压缩

支持

不支持

 

阿里巴巴,淘宝用哪个?
前期:阿里巴巴大部分MySQL数据库其实使用的是Percona的Xtradb原型加以修改。

Percona公司为MySQL数据库服务器进行了改进,新建了一款存储引擎叫Xtradb,这款存储引擎从性能上完全可以替代Innodb,在功能和性能上较MySQL有着很显著的提升,

该版本提升了在高负载情况下的InnoDB的性能,为DBA提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。

现在:2016年云栖大会·北京峰会上,阿里云宣布启动了 AliSQL、AliRedis 开源项目,AliSQL是基于MySQL官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。

AliSQL的出现不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL等社区汲取精华,也沉淀了阿里巴巴多年在MySQL领域的经验和解决方案。该版本在社区版的基础上做了大量的性能与功能的优化改进,尤其适合电商、云计算以及金融等行业环境,针对电商秒杀场景,AliSQL有着特殊的优化,“在通用基准测试场景下,AliSQL版本比MySQL官方版本有着 70% 的性能提升,在秒杀场景下,性能提升 100倍”,可帮助中小企业和开发者提升数据运营能力。

总结:

通常在企业中,我们会使用InnoDB存储引擎,因为它支持事务,支持行锁,高并发处理性能更好,CPU及内存缓存页优化使得资源利用率更高。

对于那种只需要较高的查询速度,没有什么其它特殊要求的,可以选择MyISAM存储引擎。

但是需注意:

MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比InnoDB高,但InnoDB的以主键为条件的查询性能是非常高的。

posted @ 2019-11-04 17:23  陈松(Andy)  阅读(837)  评论(0编辑  收藏  举报