tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

TPC-C 测试

PDF
聚焦模式
字号
最后更新时间: 2026-02-10 10:59:29

测试概述

提供 TDSQL Boundless 的 TPC-C 测试报告,作为 TDSQL Boundless 不同版本的性能对比基准。
说明:
TPC-C 是业界常用的一套 Benchmark,由 TPC 委员会制定发布,用于评测数据库的联机交易处理(偏向 OLTP)能力。主要涉及10张表,包含了 NewOrder(新订单的生成)、Payment(订单付款)、OrderStatus(最近订单查询)、Delivery(配送)和 StockLevel(库存缺货状态分析)等五类业务事务模型。TPC-C 使用 tpmC 值(Transactions per Minute)来衡量系统最大有效吞吐量(MQTh,Max Qualified Throughput),其中Transactions 以 NewOrder Transaction 为准,即最终衡量单位为每分钟处理的新订单数。

测试环境

硬件环境

节点类型
节点规格
节点个数
对等节点
16Core CPU/32GB Memory/增强型 SSD 云硬盘300GB
3
管理节点
4Core CPU/8GB Memory
3

软件版本

节点类型
软件版本
对等节点
v21.1.0
v5.0

参数配置

set persist audit_log_policy = "NONE";
set persist max_prepared_stmt_count = 1000000;
set persist temptable_max_mmap = 214748364800

测试计划

准备压测工具

下载社区的开源的 BenchmarkSQL 压测工具,解压缩并进行测试。

准备测试数据

基于1000 Warehouse 定量进行。在压测机上执行如下命令,修改 props.mysql配置文件,并填写对应的实例连接信息:
cd benchmarksql/run
vi props.mysql
其中,配置文件 props.mysql及主要参数如下:
db=mysql
driver=com.mysql.jdbc.Driver
conn=jdbc:mysql://{ip}:{port}/tpcc?useSSL=false&useServerPrepStmts=true&useConfigs=maxPerformance&rewriteBatchedStatements=true&cachePrepStmts=true&prepStmtCacheSize=1000&prepStmtCacheSqlLimit=2048
user={user}
password={password}

warehouses=1000
loadWorkers=20

terminals={terminals}
runTxnsPerTerminal=0
runMins=5
limitTxnsPerMin=0
terminalWarehouseFixed=true

newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
创建数据库:
create database tpcc;
开始创建表和索引,修改核心表的表定义为 Hash 分区表,默认创建9个分区:
cd benchmarksql/run/sql.common
# 修改表结构,核心表定义为Hash分区表,默认9个分区
cp tableCreates.sql tableCreates_tdsql.sql
vi tableCreates_tdsql.sql

CREATE TABLE bmsql_config (
cfg_name varchar(30) primary key,
cfg_value varchar(50)
);


CREATE TABLE bmsql_warehouse (
w_id integer not null,
w_ytd decimal(12,2),
w_tax decimal(4,4),
w_name varchar(10),
w_street_1 varchar(20),
w_street_2 varchar(20),
w_city varchar(20),
w_state char(2),
w_zip char(9),
primary key(w_id)
) partition by hash(w_id) partitions 9;

CREATE TABLE bmsql_district (
d_w_id integer not null,
d_id integer not null,
d_ytd decimal(12,2),
d_tax decimal(4,4),
d_next_o_id integer,
d_name varchar(10),
d_street_1 varchar(20),
d_street_2 varchar(20),
d_city varchar(20),
d_state char(2),
d_zip char(9),
PRIMARY KEY (d_w_id, d_id)
) partition by hash(d_w_id) partitions 9;

CREATE TABLE bmsql_customer (
c_w_id integer not null,
c_d_id integer not null,
c_id integer not null,
c_discount decimal(4,4),
c_credit char(2),
c_last varchar(16),
c_first varchar(16),
c_credit_lim decimal(12,2),
c_balance decimal(12,2),
c_ytd_payment decimal(12,2),
c_payment_cnt integer,
c_delivery_cnt integer,
c_street_1 varchar(20),
c_street_2 varchar(20),
c_city varchar(20),
c_state char(2),
c_zip char(9),
c_phone char(16),
c_since timestamp,
c_middle char(2),
c_data varchar(500),
PRIMARY KEY (c_w_id, c_d_id, c_id)
) partition by hash(c_w_id) partitions 9;


CREATE TABLE bmsql_history (
hist_id integer,
h_c_id integer,
h_c_d_id integer,
h_c_w_id integer,
h_d_id integer,
h_w_id integer,
h_date timestamp,
h_amount decimal(6,2),
h_data varchar(24)
) partition by hash(h_w_id) partitions 9;

CREATE TABLE bmsql_new_order (
no_w_id integer not null ,
no_d_id integer not null,
no_o_id integer not null,
PRIMARY KEY (no_w_id, no_d_id, no_o_id)
) partition by hash(no_w_id) partitions 9;

CREATE TABLE bmsql_oorder (
o_w_id integer not null,
o_d_id integer not null,
o_id integer not null,
o_c_id integer,
o_carrier_id integer,
o_ol_cnt integer,
o_all_local integer,
o_entry_d timestamp,
PRIMARY KEY (o_w_id, o_d_id, o_id)
) partition by hash(o_w_id) partitions 9;

CREATE TABLE bmsql_order_line (
ol_w_id integer not null,
ol_d_id integer not null,
ol_o_id integer not null,
ol_number integer not null,
ol_i_id integer not null,
ol_delivery_d timestamp,
ol_amount decimal(6,2),
ol_supply_w_id integer,
ol_quantity integer,
ol_dist_info char(24),
PRIMARY KEY (ol_w_id, ol_d_id, ol_o_id, ol_number)
) partition by hash(ol_w_id) partitions 9;

CREATE TABLE bmsql_item (
i_id integer not null,
i_name varchar(24),
i_price decimal(5,2),
i_data varchar(50),
i_im_id integer,
PRIMARY KEY (i_id)
);

CREATE TABLE bmsql_stock (
s_w_id integer not null,
s_i_id integer not null,
s_quantity integer,
s_ytd integer,
s_order_cnt integer,
s_remote_cnt integer,
s_data varchar(50),
s_dist_01 char(24),
s_dist_02 char(24),
s_dist_03 char(24),
s_dist_04 char(24),
s_dist_05 char(24),
s_dist_06 char(24),
s_dist_07 char(24),
s_dist_08 char(24),
s_dist_09 char(24),
s_dist_10 char(24),
PRIMARY KEY (s_w_id, s_i_id)
) partition by hash(s_w_id) partitions 9;
库表创建完毕后,开始导入压测数据:
cd ..
nohup ./runLoader.sh props.mysql &
数据导入完成后,执行如下 SQL 创建索引:
create index bmsql_customer_idx1 on bmsql_customer (c_w_id, c_d_id, c_last, c_first);
create unique index bmsql_oorder_idx1 on bmsql_oorder (o_w_id, o_d_id, o_carrier_id, o_id);

执行测试

运行以下命令运行 TPC-C 测试:
cd benchmarksql/run
./runBenchmark.sh props.mysql

测试结果


线程数
tpmTOTAL
tpmC (NewOrders)
64
208,948.14
94,035.97
128
310,788.33
139,550.15
256
379,050.95
170,517.90
512
412,147.72
185,392.99
1,024
434,737.57
195,442.64

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈