全部博文(389)
分类: Mysql/postgreSQL
2014-12-19 23:01:06
MySQL innodb引擎和myisam的引擎执行对比测试
不知道从什么时候开始有一股传言总是认为myiam的查询执行要比innodb快.我们知道
myisam只有索引的cache,而没有自己的buffer cache,只能依赖os的文件系统cache来
加快读数据,而innodb是有自己的数据cache,从某种程度上来说,innodb管理cache比os
去管理文件系统的cache更加好才对,而为什么说innodb的查询效率反而更加低下呢?
我通过sysbench工具,把oltp-read-only参数设为on,这样确保sql语句都是一些简单的
select查询.然后来测试下两者的执行效率.
先初始化数据.
[root@c12 ~]# sysbench --test=oltp
--mysql-host=192.168.10.145 --mysql-port=3307
--mysql-user=root --mysql-password=123456 --mysql-db=db1
--oltp-table-size=100000 --num-threads=8 prepare
初始化完成后再使用以下参数进行测试,只是每次的线程数不一样
sysbench --test=oltp --mysql-host=192.168.10.145 --mysql-port=3307 --mysql-user=root
--mysql-password=123456 --mysql-db=db1 --oltp-table-size=100000 --num-threads=N --oltp-read-only=on run
先测试innodb的效率
线程数 QPS
4 4881
8 7712
修改引擎为myisam
mysql> alter table sbtest engine=myisam;
Query OK, 100000 rows affected (1.14 sec)
Records: 100000 Duplicates: 0 Warnings: 0
线程数 QPS
4 4675
8 7668
对于每个线程数,我测试的次数大于五次,取平均值,发现在简单的select语句中,myisam相比innodb没有任何优势.