sqlserver性能测试
  

新手671741 16001人觉得有帮助

{{ttag.title}}
“当前已有100+用户参与分享,共计发放奖励50000+“


      对数据库知之甚少的我机缘巧合下参与了一个sqlserver的压力测试项目,整个过程全靠DBA大佬在线辅导,才让我完成了测试,收获不少,也在这和大家做下分享,希望大家多多交流,大佬多多指正!
一、测试背景
某医院有测试超融合上数据库的性能的需要,于是基于需要上门对超融合上的数据库进行了压力测试。客户用到的数据库是SQL server,业务系统是药房的进销存系统,主要想通过多用户高并发来测试数据库的性能指标。

二、测试工具
测试SQL server数据库需要用到benchmarksql工具,下面简单介绍一下benchmarksql。
BenchmarkSQL是一款经典的开源数据库测试工具,内嵌了TPCC测试脚本,可以对DB2、PostgreSQL、MySQL、Oracle以及SQL Server等数据库直接进行测试。

三、压测参数&名词
测试之前先搞清楚我们要怎么测,以及为什么要这么测,这就需要我们了解客户要测试什么类型的业务系统?这种类型的业务系统需要用到什么模型进行压测?测试的相关指标分别代表什么
1、医院的HIS系统属于OLTP业务类型,
Online Transaction  Processing联机事务处理过程(OLTP),也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。典型代表是火车票售票系统,进销存系统,医院HIS系统
2、OLTP业务类型用到的是TPCC模型。TPCC是基于OLTP在线事务处理过程的基准程序,是模拟一个批发商的货物管理进销存系统。
3、TPCC的性能由tpmC吞吐率来衡量,其中tpm是Transactions Per Minute(每分钟处理的交易量)。TPM值在国内外被广泛用于衡量计算机系统的事务处理能力。这个数值一般是TPS*60(*TPS:Transactions Per Second(每秒传输的事务处理个数)。*事务:事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时)。简单来说,所谓事务就是用户发起的一次请求,tpmC的值就是数据库1分钟能处理多少请求,tpsC的值是数据库1秒钟能处理多少请求。
--所以这里我们的tpmC的值是越大越好!

四、测试过程

1、新建虚拟机并安装SQL server数据库软件
2、安装Java环境并新建数据库(这里新建的数据库是benchmarksqlserver)
3、关联数据库账号并配置benchmarkSQL工具
4、初始化benchmarkSQL模型(建表、加仓100、创建索引  --大概10G数据量,耗时约半个小时) 加仓--将数据初始化到刚才新建的数据表里
5、开始进行压测(100并发)
这里我们可以看到,刚开始的tpmC值是猛增的,一直飙到了4万
持续了一分钟,最终tpmC的值逐渐回落到3.4万,也就是最终的结果,但是这里我们可以看到在这个过程中CPU和内存的负载都不高,所以可以将并发数调高继续测试,观察tpmC还会不会增大---建议在100-200间测试
6、对比测试150并发
持续了一分钟,最终tpmC的值逐渐回落到3.7万,比100并发有明显的增长。说明100并发时还没达到数据库的性能瓶颈
7、对比测试200并发
   
持续了一分钟,最终tpmC的值逐渐回落到3.1万,比100并发有明显的降低。说明200并发时已经达到了数据库的性能瓶颈

五、测试总结
1、测试条件
虚拟机配置:16C+32G仓库数:100(相当于10G的数据量)
参数比重new_order_weight=45(下单操作占比45%)
          payment_weight=43(支付操作占比43%)
order_status_weight=4(查看订单状态操作占比4%)
delivery_weight=4(物流操作占比4%)
stock_level_weight=4(仓储操作占比4%)

2、测试结果
并发100:tpmC=3.4万  tpsC=566.7
并发150:tpmC=3.7万          tpsC=616.7
并发100:tpmC=3.1万  tpsC=516.7

3、测试结论

在上述虚拟机的配置条件下,以并发100为例。我们的进销存数据库系统有大约10G的数据量,相当于有100个用户同时进行操作(有45人在进行下单操作,43人进行支付操作,4人在查看订单...),我们的数据库每分钟可以处理3.4万个这些请求,每秒可以处理566.7个请求。
(其他并发量同理)

六、注意
1、这里我们测试用到的是benchmarksql里自带的一个进销存业务模块,而不是客 户实际的数据库,因为如果要对客户的业务库进行压力测试,只有两个办法,找100个人同时操作来验证数据库性能(比如喊1、2、3,让100个人同时登录),或 者通过市面上专业的压测软件如IBM的loadrunner(收费),由客户业务系统的开发人员配合配置(还是拿登录举例,要配置http请求的参数,而且如果没有公有账号,还需要配置100个用户名和密码),过程相当麻烦。

2、本篇分享没有把测试的详细步骤罗列,因为benchmarksql的配置比较简单,主要是要理解配置参数的含义,搭建库的过程不是这篇分享的重点故不做展开。



打赏鼓励作者,期待更多好文!

打赏
4人已打赏

不懂就问 发表于 2020-7-26 11:46
  
感谢分享,数据库压测在超融合测试中是一个比较常见的测试项,楼主介绍了SQL server库测试工具的benchmarksq的基本测试参数。建议可以尝试再试一下Oracle数据库压测,可以丰富知识面,社区就有指导文档。(给一点小建议,前面的知识点介绍,注意下格式,复制过来的内容要调整间距)
rc 发表于 2020-7-15 18:30
  
这个很有用,写的很不错,点赞
张大叔 发表于 2020-7-15 18:49
  
这个很有用,写的很不错,点赞
lisi 发表于 2020-7-15 20:03
  
太精彩了!
gqce 发表于 2020-7-19 17:24
  
感谢分享
newstar 发表于 2020-7-22 13:22
  
测试SQL性能,为优化做准备,感谢分享;
陈氹 发表于 2020-7-22 21:29
  
很详细的测试过程,很有帮助
林明纲_福州办 发表于 2020-7-24 17:31
  
感谢楼主科普了压力测试参数以及具体的测试方法,在实际场景中很有帮助
沧海 发表于 2020-7-26 17:29
  
感谢分享
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
干货满满
技术笔记
新版本体验
产品连连看
2023技术争霸赛专题
功能体验
技术咨询
GIF动图学习
自助服务平台操作指引
信服课堂视频
标准化排查
社区帮助指南
通用技术
秒懂零信任
答题自测
安装部署配置
上网策略
SANGFOR资讯
技术晨报
项目案例
专家分享
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

217
275
151

发帖

粉丝

关注

本版达人

皮皮虾·真

本周建议达人

郑州网络

本周分享达人

二进制网络

本周提问达人