現在很多公司在使用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的消耗差異如此之大,原因相信大家都清楚了,這樣的測試結果也是非常符合理論原理的。