开发者社区> 白展糖> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

mysql 数据库引擎 MyISAM InnoDB 大比拼 区别

简介: 先给上自己的民间说法,官方英文说法还在翻译解读中,稍后跟上 Mysql 数据库中,最常用的两种引擎是innordb和myisam。Innordb的功能要比myiasm强大很多,但是innordb的性能要比myisam差很多,如果你的网站只是做简单的查询,更新,删除,那么用myiasm是最好的选择。
+关注继续查看

先给上自己的民间说法,官方英文说法还在翻译解读中,稍后跟上



Mysql 数据库中,最常用的两种引擎是innordb和myisam。Innordb的功能要比myiasm强大很多,但是innordb的性能要比myisam差很多,如果你的网站只是做简单的查询,更新,删除,那么用myiasm是最好的选择。


测试方法:连续提交10个query, 表记录总数:38万 , 时间单位 s
 
引擎类型                    Myisam              innordb              性能相差
 count                       0.0008357           3.0163                 3609
 查询主键                 0.005708             0.1574                 27.57
 查询非主键               24.01                  80.37                  3.348
 更新主键                 0.008124             0.8183                100.7
 更新非主键              0.004141            0.02625               6.338
 插入                       0.004188              0.3694                88.21


结论:
1. 加了索引以后,对于Myisam查询可以加快:4 206.09733倍,对innordb 查询加快510.72921倍。同时对myisam更新速度减慢为原来的1/2,innordb的更新速度减慢为原来的1/30。大家要看情况决定是否要加索引,比如不查询的log表,不要做任何的索引。
2. 如果你的数据量是百万级别的,并且没有任何的事务处理,那么用myisam是性能最好的选择。
3. Innordb的表的大小更加的大,用myisam可以省很多的硬盘空间。
 
在我们测试的这个38w的表中,表占用空间的情况如下:
引擎类型                    MyIsam               InnorDB
 数据                       53,924 KB           58,976 KB
 索引                       13,640 KB           21,072 KB
 占用总空间             67,564 KB           80,048 KB
 
另外一个176W万记录的表, 表占用空间的情况如下:
引擎类型                MyIsam               InnorDB
 数据                   56,166 KB           90,736 KB
 索引                   67,103 KB           88,848 KB
 占用总空间        123,269 KB         179,584 KB




一般来说,
MYisam 适合:
1. 做很多count 的计算。
2. 插入不平凡,查询非常频繁。
3.  没有事务
innordb 非常适合:
1. 可靠性要求比较高,或者要求事务。
2. 表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
当然这也不是绝对的。要试验过才知道。
很多时候,性能瓶颈不是因为服务器配置不好,而是因为SQL不是很好。SQL的性能优化是关键。
除了这些常见的优化方法,
    还可以考虑 使用内存表。你测试一张myisam 和 内存表,会发现速度差不多。
其实,在并发比较强的时候,性能会相差大概五倍。我有张经常要查询的IP 地址 和 地区的 对应表,放入内存后。
以前查询 5000个 IP 地址大概 要 15S, 现在,只要 2S多。
很多东西,实际测试过才知道。用什么压力测试,测试出来的也不是很准确。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[MySQL FAQ]系列 — 从MyISAM转到InnoDB需要注意什么
[MySQL FAQ]系列 — 从MyISAM转到InnoDB需要注意什么
0 0
Mysql数据目录(3)---表数据结构myISAM(二十六)
Mysql数据目录(3)---表数据结构myISAM(二十六)
0 0
B+树(5)myISAM简介 --mysql从入门到精通(十七)
B+树(5)myISAM简介 --mysql从入门到精通(十七)
0 0
软件测试mysql面试题:能说下myisam 和 innodb的区别吗?
软件测试mysql面试题:能说下myisam 和 innodb的区别吗?
0 0
Mysql重启后innodb和myisam插入的主键id变化总结
Mysql重启后innodb和myisam插入的主键id变化总结
0 0
Mysql 中 MyISAM 和 InnoDB 的区别有哪些?
Mysql 中 MyISAM 和 InnoDB 的区别有哪些?
0 0
Mysql事务以及InnoDB和MyISAM区别讲解
Mysql事务以及InnoDB和MyISAM区别讲解
0 0
MySQL中MyISAM与InnoDB区别及选择
MySQL中MyISAM与InnoDB区别及选择
0 0
MySQL 中 MyISAM vs. InnoDB
 MyISAM 是 MySQL 的默认数据库引擎(5.5 版本之前),由早期的 ISAM 改良而来,虽然性能极佳,但却有一个致命缺点:不支持事务处理(transaction),后来 MySQL 导入 InnoDB 以强化参照完整性与并发违规处理机制,后来就逐渐取代 MyISAM 成为 MySQL 的默认数据库引擎,现在最新版本的 MyISAM 也支持事务处理。
0 0
MySQL的存储引擎(InnoDB与MyISAM)
MySQL的存储引擎(InnoDB与MyISAM)
0 0
+关注
白展糖
十多年的JAVA码农,带着小组向前冲
文章
问答
文章排行榜
最热
最新
相关电子书
更多
让 MySQL 原生分布式触手可及
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载