原创<br> 数据库OceanBase创始人阳振坤:通关TPC-C到底有多难?( 六 )

其次,TPC-C规定被测数据库的性能(tpmC)与数据量成正比,事实上真实业务场景也是如此。TPC-C的基本数据单元是仓库(warehouse),每个仓库的数据量通常在70MB左右(与具体实现相关),TPC-C要求终端用户在选择事务类型时,需要按照规定的比例选择五种事务,终端用户每个事务都有一定的输入时间(对每种事务分别固定)和一定范围的随机的思考时间(一个对数函数),根据这些要求,每个仓库所能获得的tpmC上限是12.86(假设数据库的响应时间为0)。假设某系统获得150万tpmC,大约对应12万个仓库,按70MB/仓库计算,数据量约8.4TB,而TPC-C同时要求系统具备60天、每天压测8小时的存储容量,因此系统的存储容量可能要30TB或更多,而某些厂商用几百或几千个仓库全部装入内存,无视单个仓库的最大tpmC上限,然后号称获得百万tpmC,不仅不符合大多数真实业务场景,而且明显违反了TPC-C规范,就像当年TPC组织成立之前一些公司的所作所为一样。

第三,TPC-C要求被测数据库能够以平稳的性能长期地运行。测试时,去掉启动预热(ramp up)和结束降速(ramp down)时间后,被测数据库至少要性能平稳地(steady state)运行8小时,其中性能采集时段(不少于2小时)内的性能累积波动不得超过2%。众所周知,各种计算机系统在极限压力下性能会产生较大的波动并可能被压垮而崩溃,为了避免被压垮,实际生产环境从来不会让系统处于极限压力,TPC-C这个规定正是从实际生产需求出发的。此外,TPC-C要求被测数据库长时间运行,同样是实际生产系统的要求。某些数据库厂商让数据库在很短时间内冲击性能的一个尖峰值,既没有保证数据库在较长时间内稳定运行,更谈不上性能波动不超过2%,但却声称自己的数据库达到了这个尖峰性能。本次benchmark测试中,OceanBase做到了8小时性能波动低于0.5%。

推荐阅读