暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓TPC-C 基准测试方案

1175

测试简介

测试目的

  本文档是针对人大金仓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使用率调整

主备状态

  主备搭建过程不在此文档展示。
ps.png

准备测试用户

打开数据,并创建压测数据库和压测用户
//打开数据库
#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 &

ks.png

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
最后修改时间:2024-05-16 13:30:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论