本文档介绍如何使用TPC-C和TPC-H工具测试PolarDB-X 2.0HTAP混合负载性能,您可以按照本文介绍自行测试对比,快速了解数据库系统的性能。

测试工具

HTAP混合负载测试采用了TPC-C和TPC-H这两种业界常用的Benchmark,其中TPC-C用于OLTP负载测试,TPC-H用于OLAP负载测试。

  • TPC-C是业界常用的一套Benchmark,由TPC委员会制定发布,用于评测数据库的联机交易处理(偏向OLTP能力)。主要涉及10张表,包含了NewOrder(新订单的生成)、Payment(订单付款)、OrderStatus(最近订单查询)、Delivery(配送)和StockLevel(库存缺货状态分析)等五类业务事务模型。TPC-C使用tpmC值(Transactions per Minute)来衡量系统最大有效吞吐量(MQTh,Max Qualified Throughput),其中Transactions以NewOrder Transaction为准,即最终衡量单位为每分钟处理的新订单数。
  • TPC-H也由TPC委员会制定发布的另一套业界常用的Benchmark,用于评测数据库的分析型查询能力。TPC-H查询包含8张数据表、22条复杂的SQL查询,大多数查询包含若干表Join、子查询和Group-by聚合等。

测试环境

  • TPC-C测试结果主要基于1000 Warehouse,其中主要的表数据量如下:
    • bmsql_order_line 3亿行
    • bmsql_stock 1亿行
    • bmsql_customer、bmsql_history、bmsql_oorder各3000万行
  • TPC-H结果基于50 GB数据量(Scalar Factor = 50),其中主要表数据量如下:
    • LINEITEM表约3亿行
    • ORDERS表7500万行
    • PARSUPP表4000万行
  • 用于测试的PolarDB-X 2.0实例详情如下:
    • 企业版主实例32核128 GB(即包含两个规格为16核64 GB的主节点)、只读实例32核128 GB(即包含两个规格为16核64 GB的只读节点)。
    • 智能读写分离功能默认开启,连接池参数CONN_POOL_MAX_POOL_SIZE调整至200。

测试结果

在开启智能读写分离模式并存在只读实例情况下,TPC-C流量将会被路由至主实例,而TPC-H流量将会被路由至只读实例。OLTP负载与OLAP负载能够分别在主实例和只读实例上做到物理资源隔离,同时只读实例可以提供多机并行能力,能够充分利用计算资源,以及数据强一致读的能力保证读到最新数据。在上述测试环境下,TPC-C吞吐峰值可达到23万tpmC,TPC-H总耗时约为274s。

HTAP混合负载测试包括以下场景:

  • 开始通过100并发的纯TPC-C流量,吞吐可以达到23万tpmC。
  • 关闭智能读写分离,加入TPC-H流量混跑。TPC-C吞吐下降明显,TPC-H总耗时为840s。
  • 开启智能读写分离,TPC-C吞吐恢复到23万tpmC,TPC-H总耗时为274s。
1
  • TPC-CTPC-C
    并发数 tpmC
    32 87783
    64 175127
    100 230212
  • TPC-Htpc-h
    Query 主实例耗时

    (单位:秒)

    只读实例(并行)耗时

    (单位:秒)

    Q1 54.61 42.514
    Q2 3.636 3.993
    Q3 14.331 8.584
    Q4 3.462 2.421
    Q5 8.672 5.89
    Q6 8.807 6.531
    Q7 19.937 13.28
    Q8 14.663 9.863
    Q9 38.573 26.284
    Q10 8.214 9.774
    Q11 3.882 2.629
    Q12 11.043 7.855
    Q13 9.71 7.034
    Q14 12.39 9.726
    Q15 28.375 21.607
    Q16 4.721 3.592
    Q17 1.08 1.193
    Q18 12.2 10.707
    Q19 1.667 2.141
    Q20 52.494 38.182
    Q21 60.905 37.539
    Q22 5.125 3.216
    Total 378.4 274.5

如何运行HTAP测试