MOT样例TPC-C基准

    该数据库由9个不同结构的表组成,因此也包括9种类型的数据。每个表的数据大小和数量不同。在数据库上混合执行五种不同类型和复杂性的并发事务。这些大部分是在线事务或者部分排队等待延迟批处理。由于这些表竞争有限的系统资源,许多系统组件都有压力,数据更改以各种方式执行。

    表 1 TPC-C数据库结构

    事务组合代表从订单输入到订单交付的完整业务处理。具体来说,所提供的组合旨在产生相等数量的新订单事务和支付事务,并且为每十个新订单事务产生一个交付事务、一个订单状态事务和一个库存水平事务。

    表 2 TPC-C事务比例

    事务级别≥4%

    占所有事务份额

    TPC-C新订单

    ≤ 45%

    支付

    ≥ 43%

    订单状态

    ≥ 4%

    交付

    ≥4%(批次)

    库存水平

    ≥ 4%

    有两种方法来执行事务:作为存储过程(允许更高的吞吐量)和以标准交互式SQL模式执行。

    性能指标:tpm-C

    tpm-C指标是每分钟执行的新订单事务数。考虑到事务中所需的组合以及广泛的复杂性和类型,此指标最接近地模拟一个全面的业务活动,而不仅仅是一个或两个事务或计算机操作。因此,tpm-C指标被认为是业务吞吐量的指标。

    请按照中的说明进行操作。下面介绍openGauss数据库在华为TaiShan服务器和Euler 2.8操作系统上部署时系统级的关键优化点,以达到极致性能。

    可以使用BenchmarkSQL测试TPCC,如下所示:

    • benchmarksql工具中的模式创建脚本需要调整为MOT语法,避免使用不支持的DDL。下载调整后的脚本:https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.0.0/MOT-TPCC-Benchmark.tar.gz。该tar文件的内容包括sql.common.opengauss.mot文件夹和jTPCCTData.java文件,以及一个示例配置文件postgresql.conf和TPCC属性文件props.mot供参考。
    • 将sql.common.opengauss.mot文件夹放在run文件夹下与sql.common同级的文件夹,用下载的Java文件替换src/client/jTPCCTData.java文件。
    • 编辑run文件夹下的runDatabaseBuild.sh文件,将extraHistID从AFTER_LOAD列表中删除,以避免不支持的ALTER表DDL。
    • 将lib/postgres文件夹下的JDBC驱动替换为openGauss JDBC。驱动下载链接:。

    在下载的Java文件(与原始文件相比)中所做的唯一更改是注释错误日志打印,以进行序列化和重复键错误。这些错误在MOT中是正常的,因为MOT使用的是乐观并发控制(OCC)机制。

    说明: 基准测试使用标准交互式SQL模式执行,没有存储过程。

    任何人都可以启动服务器,运行benchmarksql脚本。

    运行基准测试:

    1. 进入benchmarksql运行文件夹,将sql.common重命名为sql.common.orig。
    2. 启动数据库服务器。
    3. 配置客户端props.pg文件。
    4. 运行基准测试。
    • CLI结果

      BenchmarkSQL结果应如下所示:

      MOT样例TPC-C基准 - 图3

      随着时间的推移,基准测量并平均已提交的事务。上面的例子是两分钟的基准测试。

      得分为271万tmp-C(每分钟新增订单数),占总承诺事务数的45%,即tpmTOTAL。

    • 详细结果报告

      详细结果报告示例:

    图 1 详细结果报告

    MOT样例TPC-C基准 - 图5

    BenchmarkSQL收集详细的性能统计数据和操作系统性能数据(如果配置了的话)。

    这些信息可以显示查询的延迟,从而暴露与存储/网络/CPU相关的瓶颈。

    华为TaiShan 2480 MOT TPC-C测试结果

    2020年5月1日TPC-C基准测试,TaiShan 2480服务器(Arm/鲲鹏4路服务器)安装openGauss数据库,吞吐量达到479万tpmC。

    图 2 华为TaiShan 2480 MOT TPC-C测试结果