首批通过分布式安全可靠测评,为关键业务系统打造
性能测试
更新时间:2026-04-14 17:55:52
本文介绍如何使用 obd 命令对 OceanBase 集群进行性能测试。
说明
使用 obd 命令进行性能测试时,待测试的集群需是被 obd 管理的集群,否则 obd 无法获取集群的信息。obd 部署的集群默认由 obd 管理,非 obd 部署的集群可执行接管操作进行接管。接管的详细操作可参见 使用 obd 接管集群。
您也可选择基于官方测试工具手动逐步进行性能测试,详细操作可参见官网《OceanBase 数据库》文档 参考指南/性能测试 章节。
环境准备
测试前请按照如下要求准备您的测试环境:
JDK:建议使用 1.8u131 及以上版本。
make:可执行
yum install make命令安装。gcc:可执行
yum install gcc命令安装。OBClient:详细信息,请参考 OBClient 文档。
OceanBase 数据库:需部署 OceanBase 数据库,并创建执行测试的租户及用户。部署 OceanBase 数据库的操作可参见 通过图形化界面部署 OceanBase 集群,创建租户可使用
obd cluster tenant create命令,详细介绍可参见 集群命令组 中 obd cluster tenant create 部分内容。iops:建议磁盘 iops 在 10000 以上。
注意
部署集群时,建议不要使用
obd cluster autodeploy命令,该命令为了保证稳定性,不会最大化资源利用率(例如不会使用所有内存),建议单独对配置文件进行调优,最大化资源利用率。sys 租户是管理集群的内置系统租户,请勿直接使用 sys 租户进行测试。
TPC-H 测试
TPC-H 概述
TPC-H(商业智能计算测试)是美国交易处理效能委员会(TPC,Transaction Processing Performance Council)组织制定的用来模拟决策支持类应用的一个测试集。目前,学术界和工业界普遍采用 TPC-H 来评价决策支持技术方面应用的性能。这种商业测试可以全方位评测系统的整体商业计算综合能力,对厂商的要求更高,同时也具有普遍的商业实用意义,目前在银行信贷分析和信用卡分析、电信运营分析、税收分析、烟草行业决策分析中都有广泛的应用。
TPC-H 基准测试由 TPC-D(由 TPC 于 1994 年制定的标准,用于决策支持系统方面的测试基准)发展而来的。TPC-H 用 3NF 实现了一个数据仓库,共包含 8 个基本关系,其主要评价指标是各个查询的响应时间,即从提交查询到结果返回所需时间。TPC-H 基准测试的度量单位是每小时执行的查询数(QphH@size),其中 H 表示每小时系统执行复杂查询的平均次数,size 表示数据库规模的大小,它能够反映出系统在处理查询时的能力。TPC-H 是根据真实的生产运行环境来建模的,这使得它可以评估一些其他测试所不能评估的关键性能参数。总而言之,TPC 组织颁布的TPC-H 标准满足了数据仓库领域的测试需求,并且促使各个厂商以及研究机构将该项技术推向极限。
操作步骤
您可参照如下步骤使用 obd 对 OceanBase 集群进行 TPC-H 测试。
安装 obtpch
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo sudo yum install obtpch为 obtpch 创建软连接
sudo ln -s /usr/tpc-h-tools/tpc-h-tools/ /usr/local/执行 TPC-H 测试
obd test tpch test --tenant=tpch_mysql -s 100 --remote-tbl-dir=/tmp/tpch100obd test tpch命令的详细介绍可参见 测试命令组 中 obd test tpch。执行测试时需注意如下信息:
示例中以待测试的集群名为
test,租户名为tpch_mysql为例,您需根据实际情况进行替换(可执行obd cluster list命令查看集群名,并执行obd cluster tenant show <deploy_name>命令查看集群中存在的租户)。同时,您也可根据自己的具体情况做一些参数上的调整。运行
obd test tpch后,系统会详细列出运行步骤和输出,数据量越大耗时越久。remote-tbl-dir远程目录需具备足够能存储 TPC-H 测试数据的容量,建议单独一块盘存储加载测试数据。obd test tpch命令会自动完成所有操作,无需其他额外任何操作,包含测试数据的生成、传送、OceanBase 数据库参数优化、加载和测试。当中间环节出错时,您可通过配置参数进行重试,例如:配置--test-only跳过数据的生成和传送,直接进行加载和测试。
执行测试后的输出结果如下:
[2024-05-08 17:13:47]: start /home/admin/tmp/db1.sql [2024-05-08 17:13:53]: end /home/admin/tmp/db1.sql, cost 5.34s [2024-05-08 17:13:53]: start /home/admin/tmp/db2.sql [2024-05-08 17:13:53]: end /home/admin/tmp/db2.sql, cost 0.69s [2024-05-08 17:13:53]: start /home/admin/tmp/db3.sql [2024-05-08 17:13:55]: end /home/admin/tmp/db3.sql, cost 1.29s [2024-05-08 17:13:55]: start /home/admin/tmp/db4.sql [2024-05-08 17:13:56]: end /home/admin/tmp/db4.sql, cost 1.50s [2024-05-08 17:13:56]: start /home/admin/tmp/db5.sql [2024-05-08 17:14:00]: end /home/admin/tmp/db5.sql, cost 3.35s [2024-05-08 17:14:00]: start /home/admin/tmp/db6.sql [2024-05-08 17:14:00]: end /home/admin/tmp/db6.sql, cost 0.26s [2024-05-08 17:14:00]: start /home/admin/tmp/db7.sql [2024-05-08 17:14:02]: end /home/admin/tmp/db7.sql, cost 1.99s [2024-05-08 17:14:02]: start /home/admin/tmp/db8.sql [2024-05-08 17:14:05]: end /home/admin/tmp/db8.sql, cost 3.39s [2024-05-08 17:14:05]: start /home/admin/tmp/db9.sql [2024-05-08 17:14:09]: end /home/admin/tmp/db9.sql, cost 4.19s [2024-05-08 17:14:09]: start /home/admin/tmp/db10.sql [2024-05-08 17:14:10]: end /home/admin/tmp/db10.sql, cost 0.87s [2024-05-08 17:14:10]: start /home/admin/tmp/db11.sql [2024-05-08 17:14:11]: end /home/admin/tmp/db11.sql, cost 0.46s [2024-05-08 17:14:11]: start /home/admin/tmp/db12.sql [2024-05-08 17:14:12]: end /home/admin/tmp/db12.sql, cost 1.43s [2024-05-08 17:14:12]: start /home/admin/tmp/db13.sql [2024-05-08 17:14:13]: end /home/admin/tmp/db13.sql, cost 1.36s [2024-05-08 17:14:13]: start /home/admin/tmp/db14.sql [2024-05-08 17:14:14]: end /home/admin/tmp/db14.sql, cost 0.40s [2024-05-08 17:14:14]: start /home/admin/tmp/db15.sql [2024-05-08 17:14:14]: end /home/admin/tmp/db15.sql, cost 0.47s [2024-05-08 17:14:14]: start /home/admin/tmp/db16.sql [2024-05-08 17:14:15]: end /home/admin/tmp/db16.sql, cost 0.60s [2024-05-08 17:14:15]: start /home/admin/tmp/db17.sql [2024-05-08 17:14:16]: end /home/admin/tmp/db17.sql, cost 0.60s [2024-05-08 17:14:16]: start /home/admin/tmp/db18.sql [2024-05-08 17:14:18]: end /home/admin/tmp/db18.sql, cost 2.29s [2024-05-08 17:14:18]: start /home/admin/tmp/db19.sql [2024-05-08 17:14:18]: end /home/admin/tmp/db19.sql, cost 0.43s [2024-05-08 17:14:18]: start /home/admin/tmp/db20.sql [2024-05-08 17:14:19]: end /home/admin/tmp/db20.sql, cost 1.18s [2024-05-08 17:14:19]: start /home/admin/tmp/db21.sql [2024-05-08 17:14:24]: end /home/admin/tmp/db21.sql, cost 4.24s [2024-05-08 17:14:24]: start /home/admin/tmp/db22.sql [2024-05-08 17:14:25]: end /home/admin/tmp/db22.sql, cost 0.94s Total Cost: 37.26s
TPC-C 测试
TPC-C 概述
TPC-C 是一个对 OLTP(联机交易处理)系统进行测试的规范,使用一个商品销售模型对 OLTP 系统进行测试。详细信息可参见 TPC-C 中文简介。
操作步骤
您可参照如下步骤使用 obd 对 OceanBase 集群进行 TPC-C 测试。
安装 obtpcc
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo sudo yum install obtpcc java执行 TPC-C 测试
obd test tpcc test --tenant=tpcc_mysql --warehouses=10 --run-mins=1obd test tpcc命令的详细介绍可参见 测试命令组 中 obd test tpcc。执行测试时需注意如下信息:
示例中以待测试的集群名为
test,租户名为tpcc_mysql为例,您需根据实际情况进行替换(可执行obd cluster list命令查看集群名,并执行obd cluster tenant show <deploy_name>命令查看集群中存在的租户)。同时,您也可根据自己的具体情况做一些参数上的调整。运行
obd test tpcc后,系统会详细列出运行步骤和输出,数据量越大耗时越久。obd test tpcc命令会自动完成所有操作,无需其他额外任何操作,包含测试数据的生成、传送、OceanBase 数据库参数优化、加载和测试。当中间环节出错时,您可通过配置参数进行重试,例如:配置--test-only跳过数据的生成和传送,直接进行加载和测试。
执行测试后的输出结果如下:
TPC-C Result Measured tpmC (NewOrders) : 3735.65 Measured tpmTOTAL : 8402.25 Session Start : 2024-05-09 10:35:53 Session End : 2024-05-09 10:36:54 Transaction Count : 8492
Sysbench 测试
Sysbench 概述
Sysbench 是一个基于 LuaJIT 的可编写脚本的多线程基准测试工具,可以执行 CPU、内存、线程、IO 和数据库等方面的性能测试,常用于评估测试各种不同系统参数下的数据库负载情况,不需要修改源码,通过自定义 lua 脚本就可以实现不同业务类型的测试。Sysbench 主要包括以下几种测试:
CPU 性能
磁盘 IO 性能
调度程序性能
内存分配及传输速度
POSIX 线程性能
数据库性能(OLTP 基准测试)
操作步骤
您可参照如下步骤使用 obd 对 OceanBase 集群进行 Sysbench 测试。
安装 ob-sysbench
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo sudo yum install ob-sysbench执行 Sysbench 测试
obd test sysbench test --tenant=sysbench_mysql --script-name=oltp_read_only.lua,oltp_write_only.lua,oltp_read_write.lua --table-size=1000000 --threads=32,64,128,256,512,1024 --rand-type=uniform执行测试时需注意如下信息:
示例中以待测试的集群名为
test,租户名为sysbench_mysql为例,您需根据实际情况进行修改。您可执行obd cluster list命令查看集群名,并执行obd cluster tenant show <deploy_name>命令查看集群中存在的租户。示例脚本中大幅参数使用的是默认值,您可根据自己的具体情况做一些参数上的调整。详细的命令介绍可参见 测试命令组 中 obd test sysbench。
以使用的 Sysbench 脚本为
oltp_read_write.lua,启动的线程数量为1024的输出为例,输出结果如下:queries performed: read: 458682 write: 61850 other: 134686 total: 655218 transactions: 32742 (526.50 per sec.) queries: 655218 (10536.09 per sec.) ignored errors: 21 (0.34 per sec.) reconnects: 0 (0.00 per sec.) General statistics: total time: 62.1862s total number of events: 32742 Latency (ms): min: 986.50 avg: 1922.86 max: 6202.85 95th percentile: 2985.89 sum: 62958351.24 Threads fairness: events (avg/stddev): 31.9746/0.16 execution time (avg/stddev): 61.4828/0.41