本文将以TPC-C业界标准事务性能测试benchmark来展示Greenplum在事务上的处理能力。
TPC-C简介
TPC-C是由TPC(Transaction Processing Performance Council,事务处理性能委员会)提供的专门针对联机交易处理系统的规范,TPC-C模拟的是一个大型的商品批发销售公司交易负载。这个事务负载主要由9张表组成,主要涉及5类交易类型:新订单生成(New-Order)、订单支付(Payment)、发货(Delivery)、订单状态查询(Order-Status)、和库存状态查询(Stock-Level)。TPC-C测试使用吞吐量指标(Transaction per minute,简称tpmC)来衡量系统的性能,其中所统计的事务指的是新订单生成的事务,即以每分钟新订单生成的事务数来衡量系统的性能指标(在标准的TPC-C测试中,新订单的事务数量占总事务数的45%左右)。
评测指标
按照TPC的定义,流量指标(tmpC)描述了系统在执行Payment、Order-status、Delivery、Stock-Level这四种交易的同时,每分钟可以处理多少个New-Order交易。所有交易的响应时间必须满足TPC-C测试规范的要求。流量指标(tmpC)值越大越好!
tmpTotal则是指系统在执行Payment、Order-status、Delivery、Stock-Level、New-Order五种交易的同时,每分钟可以处理的事务数。
测试数据
使用开源的benchmarksql工具生成1000个warehouse的数据集,各个表的数据量如下表所示:
计算实例
假设每天有1万人次来窗口办理业务,每人次办理一项业务。即以每日1万笔前台交易为例进行综合系数的推导:
假设每月前台交易数(未来5年内的设计指标)为220,000 (有些业务在月初、月末的处理量比较高,按月统计可以平衡此项差异);
每日前台交易数=220000/22=10,000 ,即每日 1万笔;
忙时处理能力:每日交易的80%在4个小时内完成,即10000*80%/4=2000(笔/小时)
峰值处理能力:2000*2=4000(笔/小时),即峰值处理能力为每小时4000笔,或 67笔/分,假设业务人员同时在线为100人,即每人每分钟处理0.7笔)
假设每笔交易对应数据库事务数=20(这个事务数假设过高),基准TPC指标值对应的比例=8,cpu保留30%的处理能力冗余,计算值与公布值(最优值)的偏差经验值为4 (这几个参数估算的依据不足,更多的是经验值) 则 tpmC值为: tpmC= 672084/(1-30%)= 61257[颠峰处理能力时(笔/分)*每笔交易对应数据库事务数*基准TPC指标值对应的比例计算值与公布值(最优值)的偏差经验值/(1- cpu保留30%的处理能力冗余) 倒算出 综合系数 = 61257/10000=6.1 即数据库服务器tpmC = 每日前台交易数 * 6.1 (实际计算值应不高于该值) 应用服务器的 tpmC = 数据库服务器 tpmC *50% (一般) 应用服务器的 tpmC = 数据库服务器 tpmC *70% (涉及大量计算的,如社保、税务) 因此,假设我们实际业务每日有1万笔前台交易,则Greenplum集群的巅峰tmpC应达到61257。
测试集群
测试的Greenplum集群由18个计算节点,三台宿主机,每台宿主机有8个CPU核,32GB内存。
单独用一台服务器(centos7 8核16G)运行benchmarksql工具来生成TPC-C负载,向Greenplum实例发送请求。
集群的最大连接数为500。
每次运行测试的时间为10分钟。
每次执行的事务比例见下表
集群参数
参数
set optimizer = off
set shared_buffers = 512MB
set log_statement = none
set gp_resqueue_priority = off
set resource_scheduler = off
测试结果(以下测试结果是在经过不停调优后,系统能达到的性能)
测试在不同并发度情况下,Greenplum的性能结果,结果如下表所示。在进行到并发数为300时,集群系统负载已满,因此表中的最大并发数只进行到300。从表中可以看到,Greenplum的峰值性能可以达到 3201.60 tpmC。
各并发连接数下的具体结果
数据库对于各事务的响应时间
数据库各项事务处理的响应时间统计图
”脏数据“占用的内核缓冲区统计图
参考博客
TPC-C 性能测试指标 TPC,TPCC,TPMC(数据库性能衡量指标)https://git.forchange.cn/xushaohui)