本部分转自:
版权声明:本文为CSDN博主「Yeliang Wu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wylfengyujiancheng/article/details/112267080
【1】HammerDB介绍
本文性能测试使用的是 HammerDB 内置的 TPC-C 基准测试负载。
TPC-C 是一种典型的 OLTP 工作负载,其模拟了拥有多个仓库的商品批发销售公司为大量客户发货商品的场景,其中仓库数的调整在测试中能够体现数据库所能够支持的数据规模能力。
【1.1】hammerDb下载
HammerDB 下载地址:https://www.hammerdb.com/download.html
HammerDB 使用手册:https://www.hammerdb.com/document.html
HammerDB 内置 TPC-C 测试负载介绍
【1.2】TPCC 基准参数
Number of Warehouses = 100:设置仓库个数为100,将生成测试数据库大小约55GB。
Minutes of Rampup Time = 2:设置测试前预热时间为2分钟。
Minutes Test Duration = 5:设置测试时间为5分钟。
【2】测试方法
【2.1】准备 TPC-C 工作负载
1、Number of Warehouses:仓库个数,将影响生成测试库的大小。
2、Virtual Users to Build Schema:生成负载数据时的并发连接数(不能超过仓库个数),大小将影响负载数据生成效率,建议与生成负载设备 CPU 核心数保持一致。
在用Hammer DB 测试TPCC 之前,需要先用Hammer DB 往数据库里加载测试数据。 数据单位是warehouse。
1000个warehouse需要80G的空间。 默认配置下,最大支持5000个warehouse,即需要500G的空间。
Hammer DB 在加载完数据之后,会创建索引,收集统计信息,默认的脚本没有使用并行,所以这2步比较慢。
如果CPU 比较强劲,那么加载5000个warehouse 需要6个小时。
Build Schema: 加载warehouse的用户数,这里越多越好,也要和CPU 数匹配,一般是CPU数量的1 -1.5倍。
【2.2】设置测试脚本
1、Total Transactions per User:每个用户的总事务数。建议设置较高的值保证在压测时,User 不会因为事务运行完而退出。
2、Minutes of Rampup Time:压测预热时间。
3、Minutes for Test Duration:压测运行时间。
【2.3】设置自动化测试脚本
1、Minutes per Test in Virtual User Sequence:自动化测试的间隔时间,在这个时间内程序要完成创建虚拟用户、预热、运行测试、停止测试等工作。设置时间需比 Minutes of Rampup Time + Minutes for Test Duration 长。
2、Active Virtual User Sequence (Space Separated):自动化测试每一次迭代产生的虚拟用户数,虚拟用户数可以理解为并发连接数。
3、在左侧选择【Autopilot】>【Autopilot】开始测试。
4、测试结果输出在 hammerdb.log 文件中。
【最佳实践案例】
该部分转自:https://blog.csdn.net/qq_42979842/article/details/108966733
一、测试工具
HammerDB是一个开源的数据库负载测试和基准工具,有Linux和Windows版本,可以测试运行在任意系统上的数据库系统。HammerDB具有自动化的,多线程和动态脚本可扩展特点。HammerDB目前支持的数据库种类很多,主流的数据库都已经覆盖,例如Oracle、SQL Server、DB2、TimesTen、MySQL、MariaDB、PostgreSQL、Greenplum、Postgres Plus Advanced Server、Redis 和 Trafodion SQL on Hadoop。HammerDB包含一个内嵌的基于TPC-C工业标准基线工作负载。
二、测试环境
OS 名称 | Windows Server 2012 R2 Standard |
---|---|
OS版本 | 6.3.9600 |
BIOS | 1.10.2-3.el7_4.1 |
数据库版本 | SQL Server 2017 |
系统类型 | 64位 |
CPU | 4C |
MEM | 8G |
三、安装HammerDB
双击安装文件,然后显示语言选择。
单击继续以开始安装。
单击下一步以确认版本
文件将被复制并且卸载已建立
单击完成并启动HammerDB
四、开始压测
4.1 测试模型
表
- [dbo].[CUSTOMER]
- [dbo].[DISTRICT]:
- [dbo].[HISTORY]:
- [dbo].[ITEM]:
- [dbo].[NEW_ORDER]
- [dbo].[ORDER_LINE]
- [dbo].[ORDERS]
- [dbo].[STOCK]
- [dbo].[WAREHOUSE]
存储过程
- [dbo].[DELIVERY]
- [dbo].[NEWORD]
- [dbo].[OSTAT]
- [dbo].[PAYMENT]
- [dbo].[SLEV]
4.2 测试指标
TPM
Transactions Per Minute,表示数据库每分钟执行的事务数量。
4.3 测试步骤
创建压测数据库
将数据库添加到可用性组
点击options菜单->Benchmark子菜单,勾选“SQL Server”、“TPC-C"两个选项。
双击“schema Build”下的Options进行Sqlserver连接以及数据仓库配置。
配置SQL Server数据库访问内网IP、Port、用户名和密码、数据库名。
如下图:
1、Number of Warehouses:仓库个数,将影响生成测试库的大小。
2、Virtual Users to Build Schema:生成负载数据时的并发连接数(不能超过仓库个数),大小将影响负载数据生成效率,建议与生成负载设备 CPU 核心数保持一致。
在用Hammer DB 测试TPCC 之前,需要先用Hammer DB 往数据库里加载测试数据。 数据单位是warehouse。
1000个warehouse需要80G的空间。 默认配置下,最大支持5000个warehouse,即需要500G的空间。
Hammer DB 在加载完数据之后,会创建索引,收集统计信息,默认的脚本没有使用并行,所以这2步比较慢。
如果CPU 比较强劲,那么加载5000个warehouse 需要6个小时。
Build Schema: 加载warehouse的用户数,这里越多越好,也要和CPU 数匹配,一般是CPU数量的1 -1.5倍。
其中Warehouses数量设置为10个,虚拟用户数量设置为9个。
设置完成后点击OK,回到左侧导航栏,双击Build进行数据导入,需要等待几分钟,直到用户列表里的complete均显示已完成,单击红色方框停止执行,如下图所示。
都好了之后,点这个:
下一步,配置Driver script
在左侧导航栏中选择Driver script->option,配置数据库连接信息,确保数据库连接信息正确。
在左侧导航栏中选择Driver script/load。
在左侧导航栏中选择Virtual User- >Options,设置Virtual User参数,Virtual Users的数量通常是根据规格配置来选,直到数据库被压出最高TPM,如下图所示。
勾选“Log Output to Temp”后,会在c盘目录下生成hammerdb.log日志文件。如:
在左侧导航栏中选择Virtual User/Create, 点击Create。
在左侧导航栏中选择Transcations->Option,点击OK, 如下图所示。
在左侧导航栏中选择Transcations/Counter
在左侧导航栏中选择Virtual User->Run,双击Run开始运行,如下图所示。
测试结果可以在C盘根目录下的hammerdb.log日志查看:
五、测试结果
用户数 | TPM |
---|---|
8 | 47433 |
16 | 48146 |
32 | 49409 |
64 | 69298 |
128 | 71171 |
192 | 64324 |
256 | 65944 |