测试简介
测试目的
本文档是针对人大金仓KingbaseES V8R6数据库在性能方面的分析报告,目的在于总结测试情况以及分析测试结果,描述被测试系统是否能够满足项目的需求及达到相关的发布标准。验证数据库的性能,以供实际业务需求进行参考。
测试结果面向对象
预期参考人员包括项目管理者,产品经理,开发人员,测试人员,质量保证人员和其它相关人员。
测试产品功能介绍
人大金仓数据库管理系统KingbaseES是北京人大金仓信息技术股份有限公司经过多年努力,自主研制开发的具有自主知识产权的通用关系型数据库管理系统。KingbaseES V8R6面向企业关键任务应用及数据分布环境,如大业务量的在线事务处理环境、查询密集的数据仓库管理、要求苛刻的互联网应用等等,提供高效、可靠、安全的数据管理手段。
测试安排及组织形式
测试项目
- 测试项 1000仓100并发TPCC测试
- 工作内容 X86下V8R6的TPCC性能
测试方法
本次测试采用黑盒测试手段进行验证性测试。
测试环境
参与测试产品
人大金仓数据库管理系统KingbaseES V8R6
测试工具
TPCC开源工具BenchmarkSQL5.0
测试环境
硬件环境
硬件类别 | 硬件名称 | 配置 | 数量 |
---|---|---|---|
服务器 | 数据库服务器 | CPU : Hygon C86 7285 32-core Processor 128核 内存: 主 1T 备 128G 磁盘:500G |
2 |
软件环境
软件类别 | 软件名称 | 版本 |
---|---|---|
操作系统 | 麒麟 | 4.19.90-17.ky10.x86_64 |
TPC-C基准测试工具 | BenchmarkSQL | V5.0 |
数据库 | 人大金仓数据库 | KingbaseESV8 |
测试活动描述
TPCC基准测试介绍
TPCC是在国际上被广泛采用的一种衡量计算机系统的事务在线处理能力的测试方法,是旨在衡量联机事务处理(OLTP)系统性能与可伸缩性的行业标准基准测试项目。这种基准测试项目将对包括查询、更新及队列式小批量事务在内的广泛数据库功能进行测试。
OLTP系统的主要特点包括:
1、多种事务处理并发执行,充分体现了事务处理的复杂性;
2、在线与离线的事务执行模式;
3、多个在线会话终端;
4、适中的系统运行时间和应用程序运行时间;
5、大量的磁盘I/O数据流;
6、强调事务的完整性要求(ACID);
7、对于非一致的数据库分布,使用主键和从键进行访问;
8、数据库由许多大小不一、属性多样,而又相互关联的数据表组成;
9、存在较多数据访问和更新之间的资源争夺。
使用TPCC进行测试的优点是该方法为国际通用测试方法,各个主流厂商都采用此方法来测试系统性能等指标,测试结果具有参考性和可对比性。其次,TPCC不是给出基准程序的代码,而是只给出基准程序的标准规范,任何厂家或其它测试者都可以根据规范,最优地构造出自己的系统(测试平台和测试程序)。
TPCC测试的缺点是测试场景不能完全模拟用户的真实使用环境,得到的测试结论只能是近似值,这个值与基准程序的构造相关。基准程序的构造与用户环境差异越小,结果越具有参考价值。
测试过程
TPCC基准测试执行步骤
测试用例名称 | 数据库TPCC基准测试 |
---|---|
测试用例说明 (方法、目的) |
基于业界通用的TPCC标准模型验证数据库单位时间内的事务处理能力。使用benchmarkSQL5.0工具模拟的测试数据库并发用户数100,基础数据1000warehouse收集各个并发用户下的吞吐量tpmc 运行10分钟后收集tpmc值在压力测试过程中,通过收集记录服务器资源占用情况 |
前置条件 | 数据库服务器已启动并以管理员身份登录 sql执行环境默认为自动提交事务 TPC-C 1000Warehouse数据已经装载完成 |
创建数据库
initdb -U system -D /data/kingbase/tpcc/v8/data
修改数据库配置文件kingbase.conf
cd /data/kingbase/tpcc/v8/data
--部分配置文件
vi kingbase.conf
shared_preload_libraries = 'repmgr,liboracle_parser, synonym, plsql, force_view, kdb_flashback,plugin_debugger, plsql_plugin_debugger, plsql_plprofiler, ora_commands,kdb_ora_expr, sepapower, dblink, sys_kwr, sys_ksh, sys_spacequota, sys_stat_statements, backtrace, kdb_utils_function, auto_bmr, sys_squeeze'
ora_input_emptystr_isnull = on
include_if_exists = 'es_rep.conf'
track_io_timing = on # 开启IO计时统计功能,默认为off
track_functions = 'all' # 开启函数统计功能
track_sql = on # 开启统计 sql 时间,等待事件, IO
track_wait_timing = on # 开启累积式等待事件记录等待时间的功能,默认为off
sys_kwr.enable = on # ⾃动对收集到的数据⽣成快照并保存到kwr库⾥
sys_stat_statements.track = 'top' # 跟踪统计SQL语句的访问,推荐⽤ 'top',默认为'none
listen_addresses='*'
port=5236
max_connections=1000
shared_buffers=30GB
work_mem =10MB
maintenance_work_mem=1GB
effective_cache_size=64GB
max_locks_per_transaction=1024
checkpoint_timeout=60min
checkpoint_completion_target=0.9
max_parallel_workers_per_gather=0
commit_delay = 10
commit_siblings = 16
xloginsert_locks = 16
page_prune_frequency=8
enable_auto_cursor=on
wal_buffers = 1GB
wal_writer_delay = 20ms
min_wal_size=1GB
max_wal_size=64GB
wal_keep_segments=1024
bgwriter_delay = 20ms
bgwriter_lru_maxpages = 1000
bgwriter_lru_multiplier = 10.0
bindcpulist= '0-127 ' #根据CPU核数设置,该值为128核的配置
#connect_pool_size= #连接池,根据CPU数和并发数调整,建议为CPU线程数的1-2倍
##connect_delay_time= #延迟时间,根据CPU使用率调整
主备状态
主备搭建过程不在此文档展示。
准备测试用户
打开数据,并创建压测数据库和压测用户
//打开数据库
#sys_ctl start -D /data/kingbase/tpcc/v8/data
//登入数据库
ksql -p5236 -Usystem test
//创建压测数据库和压测用户
Create database benchmarksql;
CREATE USER benchmarksql WITH SUPERUSER PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE benchmarksql TO benchmarksql;
修改benchmarksql配置文件
修改benchmarksql-5.0/run/props.kingbase,在benchmarksql run目录下复制配置文件prop.pg为prop.kingbase,并编辑为kingbase的配置文件
vim props.kingbase
db=postgres
driver=com.kingbase8.Driver
conn=jdbc:kingbase8://127.0.0.1:5236/benchmarksql
#conn=jdbc:kingbase8:///BENCHMARKSQL?socketFactory=KBAFUNIXSocketFactory&socketFactoryArg=/tmp/.s.KINGBASE.54322
user=benchmarksql
password=password
warehouses=1000
loadWorkers=50
terminals=100
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=0
//To run for specified minutes- runTxnsPerTerminal must equal zero
runMins=10
//Number of total transactions per minute
limitTxnsPerMin=0
//Set to true to run in 4.x compatible mode. Set to false to use the
//entire configured database evenly.
terminalWarehouseFixed=true
//The following five values must add up to 100
//The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
// Directory name to create for collecting detailed result data.
// Comment this out to suppress.
//resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
//osCollectorScript=./misc/os_collector_linux.py
//osCollectorInterval=1
//osCollectorSSHAddr=user@dbhost
//osCollectorDevices=net_eth0 blk_sda
创建benchmarksql基础数据
切换到目录benchmarksql-5.0/run,执行如下命令建表、装载数据、创建索引
nohup ./runDatabaseBuild.sh props.kingbase > kingbase.log 2>&1 &
nmon监控系统性能
nmon -s5 -c130 -f -m /data/kingbase/nmon
执行压测
nohup ./runBenchmark.sh props.kingbase > tpcc.log 2>&1 &
--压测结果
13:22:36,853 [main] INFO jTPCC : Term-00,
13:22:36,856 [main] INFO jTPCC : Term-00, +-------------------------------------------------------------+
13:22:36,856 [main] INFO jTPCC : Term-00, BenchmarkSQL v5.0
13:22:36,856 [main] INFO jTPCC : Term-00, +-------------------------------------------------------------+
13:22:36,856 [main] INFO jTPCC : Term-00, (c) 2003, Raul Barbosa
13:22:36,857 [main] INFO jTPCC : Term-00, (c) 2004-2016, Denis Lussier
13:22:36,859 [main] INFO jTPCC : Term-00, (c) 2016, Jan Wieck
13:22:36,859 [main] INFO jTPCC : Term-00, +-------------------------------------------------------------+
13:22:36,859 [main] INFO jTPCC : Term-00,
13:22:36,859 [main] INFO jTPCC : Term-00, db=postgres
13:22:36,859 [main] INFO jTPCC : Term-00, driver=com.kingbase8.Driver
13:22:36,860 [main] INFO jTPCC : Term-00, conn=jdbc:kingbase8://127.0.0.1:5236/benchmarksql
13:22:36,860 [main] INFO jTPCC : Term-00, user=benchmarksql
13:22:36,860 [main] INFO jTPCC : Term-00,
13:22:36,860 [main] INFO jTPCC : Term-00, warehouses=1000
13:22:36,860 [main] INFO jTPCC : Term-00, terminals=100
13:22:36,862 [main] INFO jTPCC : Term-00, runMins=10
13:22:36,862 [main] INFO jTPCC : Term-00, limitTxnsPerMin=0
13:22:36,862 [main] INFO jTPCC : Term-00, terminalWarehouseFixed=true
13:22:36,863 [main] INFO jTPCC : Term-00,
13:22:36,863 [main] INFO jTPCC : Term-00, newOrderWeight=45
13:22:36,863 [main] INFO jTPCC : Term-00, paymentWeight=43
13:22:36,863 [main] INFO jTPCC : Term-00, orderStatusWeight=4
13:22:36,863 [main] INFO jTPCC : Term-00, deliveryWeight=4
13:22:36,863 [main] INFO jTPCC : Term-00, stockLevelWeight=4
13:22:36,863 [main] INFO jTPCC : Term-00,
13:22:36,864 [main] INFO jTPCC : Term-00, resultDirectory=null
13:22:36,864 [main] INFO jTPCC : Term-00, osCollectorScript=null
13:22:36,864 [main] INFO jTPCC : Term-00,
13:22:37,314 [main] INFO jTPCC : Term-00, C value for C_LAST during load: 88
13:22:37,315 [main] INFO jTPCC : Term-00, C value for C_LAST this run: 201
13:22:37,315 [main] INFO jTPCC : Term-00,
13:32:41,304 [Thread-68] INFO jTPCC : Term-00,
13:32:41,320 [Thread-68] INFO jTPCC : Term-00,
13:32:41,335 [Thread-68] INFO jTPCC : Term-00, Measured tpmC (NewOrders) = 237111.89
13:32:41,338 [Thread-68] INFO jTPCC : Term-00, Measured tpmTOTAL = 526736.31
13:32:41,339 [Thread-68] INFO jTPCC : Term-00, Session Start = 2024-04-23 13:22:41
13:32:41,340 [Thread-68] INFO jTPCC : Term-00, Session End = 2024-04-23 13:32:41
13:32:41,340 [Thread-68] INFO jTPCC : Term-00, Transaction Count = 5268082
测试结果汇总
此次TPCC测试结果可作为在同等架构,同等资源配置下与其他数据库进行对比参考使用,并不代表人大金仓最优的压测结果,众所周知,不同数据库在不同场景下,参数配置和架构设计方面都有各自最佳实践,以上TPCC测试结果仅代表原始配置下,人大金仓数据库的表现,统计结果如下。
数据库架构 | CPU核心数 | 时长 | 仓库数 | 并发数 | tpmc |
---|---|---|---|---|---|
主备 | 128 | 10min | 1000 | 100 | 237111.89 |