mysql数据库引擎MyISAM与InnoDB的区别详解
Mysql 数据库最常用的两种引擎是innordb和myisam。
Innordb的功能要比myiasm强大很多,但是innordb的性能要比myisam差很多。
如果只是做简单的查询,更新,删除,那么用myiasm是最好的选择。
测试方法:连续提交10个query, 表记录总数:38万 , 时间单位 s
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的表中,表占用空间的情况如下:
数据 53,924 KB 58,976 KB
索引 13,640 KB 21,072 KB
占用总空间 67,564 KB 80,048 KB
另外一个176W万记录的表, 表占用空间的情况如下:
数据 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更改表引擎INNODB为MyISAM的方法总结
理解myisam和innodb中count(*)的区别
mysql innodb数据库批量转换表引擎为MyISAM的方法
mysql数据库中MyISAM与InnoDB区别及性能详谈
mysql innodb优化配置方法分享
Mysql数据表类型MyISAM转到InnoDB注意事项
MySQL正确的myisam转innodb的方法
修改mysql默认存储引擎的方法
MySQL存储引擎MyISAM与InnoDB的优劣分析
mysql innodb数据库引擎解析