天天看点

序列表Innodb与Myisam表insert测试

现在很多公司在使用mysql时,由于数据量过大,都会使用分库或分表,分片就意味着需要有分片的key,有些场景下会使用自增的值来作为主键并作为分片的Key,由于mysql本身支持并发,因此很多公司就使用mysql数据库表中的自增ID作为发号器。有些公司使用innodb作为发号器表的存储引擎,有些则使用mysiam的。

        本文主要介绍了这种场景下,对两个存储引擎的测试对比,共大家参考,以便在生产环境做出合理选择。

欢迎转载,请注明作者、出处。

作者:张正

blog:http://space.itpub.net/26355921 

QQ:176036317

如有疑问,欢迎联系。

 1、表结构

CREATE TABLE `test_seq` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `sub` char(10) COLLATE utf8_unicode_ci NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

2、测试方法

采用mysqlslap , mysql官方社区版本5.5.30

insert语句:insert into test_seq(sub) values('aaaa');

3、测试结果

序列表Innodb与Myisam表insert测试

4、结果分析

    -从QPS上来看,两者相差不大

    -从CPU消耗来看,Myisam略有优势,CPU消耗略低于innodb

    -从IO消耗来看,MyIsam有明显优势,对IO消耗明显低于innodb

   对IO的消耗差异如此之大,原因相信大家都清楚了,这样的测试结果也是非常符合理论原理的。