概括总结
int(10)
类型的性能比long(20)
类型的性能好4.01%
(差别不明显)。
017版本更新说明
这一版本有两个SQL文件:
Version017IntegerId.sql:其中的ID都是int(10)
类型的
Version017LongId.sql:其中的ID都是long(20)
类型的
另外一个比较重要的改动是,之前的版本是测试10次,然后取平均值;这次的版本是测试12次,去掉一个高大值,去掉一个最小值,然后取平均值。
测试结果
统计10次测试的平均值之后:
Version017IntegerId
提交每个订单平均耗时的纳秒数: 4250404
Version017LongId
提交每个订单平均耗时的纳秒数: 4086353
Version017IntegerId
每秒钟可以提交的订单数: 235
Version017LongId
每秒钟可以提交的订单数: 244
性能差别为:(4250404 - 4086353) / 4086353 * 100% = 4.01%,即 “int(10)类型” 比 “long(20)类型” 性能好4.01%
。
【备注】:不同的机器上的测试结果会不一样,以上测试结果仅供参考。
测试结果说明
int
的性能比long
好,这个是可以理解的,一个占4字节,一个占8字节。但是从这个例子来看,对性能的影响并不大。当然,能用int
还是推荐用int
。
数据库自增ID设置为int(10)
类型时,最多可以存储100亿
条数据,而设置为long(20)
类型时,最多可以存储100亿 * 100亿
条数据。但是对于单个数据库来说,100亿
条数据已经是相当大的数了,大部分场景下都应该够用了。
做这个测试是因为我们公司一直以来都是用的long(20)
,作为一个惯例保留下来了。这次想测一测到底有没有性能差别,目前来看,差异并不明显。但是这次测试的数据量比较小,也许差别在数据量大了之后才能体现出来,所以以后可能还会再测试一次数据量大的。
源码
017版本的github源码在这里,如果不知道怎样运行项目,请参考这里