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

TPC-C是对商品销售支付等实际业务系统很好的抽象。在准备TPC-C测试的过程中,我们发现了OceanBase许多性能不优的地方,在对这些地方进行了优化和完善后,我们发现OceanBase已经达到了今年(2019年)双11的性能优化目标:事实上,TPC-C五种事务中,占比最高的两种,订单创建(new order,占比45%)和订单支付(payment,占比43%),其实就对应了生产系统中的订单创建和订单支付。因此TPC-C模型看起来很简单,恰恰是这个模型对实际的联机交易处理做了非常好的抽象。

作为一个广泛接受的标准,TPC-C非常严谨,极大地杜绝了作弊:

首先,作为一个OLTP联机交易处理系统的benchmark,TPC-C要求被测数据库必须满足数据库事务的ACID,即原子性、一致性、隔离性和持久性,其中隔离性为可串行化隔离级别,持久性要求能够抵御任何单点故障等。很显然,这是对一个OLTP数据库的基本要求。在分布式环境下,TPC-C的两种主要事务,订单创建(new order)和订单支付(payment),分别有10%和15%的分布式事务(最多可能分布在15个节点上),事务的ACID对于分布式数据库是很大的挑战,尤其是可串行化的隔离级别,这也是至今鲜少分布式数据库通过TPC-C测试的主要原因之一。国内有些厂商混淆分布式数据库的概念,把多个单机数据库堆在一起而号称分布式数据库,事实上,尽管每个单机数据库都满足ACID,但这些堆放在一起的多个单机数据库作为一个整体并不满足ACID。

推荐阅读