现在很多公司在使用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、测试结果

4、结果分析
-从QPS上来看,两者相差不大
-从CPU消耗来看,Myisam略有优势,CPU消耗略低于innodb
-从IO消耗来看,MyIsam有明显优势,对IO消耗明显低于innodb
对IO的消耗差异如此之大,原因相信大家都清楚了,这样的测试结果也是非常符合理论原理的。