当前位置:首页 > 系统运维 > 正文内容

浅谈SQL Server数据库并发测试 ***

a8116255310年前 (2015-11-01)系统运维7

1. 利用测试工具模拟多个最终用户进行并发测试;

这种测试 *** 的缺点:最终用户往往并不是直接连接到数据库上,而是要经过一个和多个中间服务程序,所以并不能保证访问数据库时还是并发。其次,这种测试 *** 需要等到客户端程序、服务端程序全部完成才能进行;

2. 利用测试工具编写脚本,直接连接数据库进行并发测试;

这种 *** 可以有效的保证并发操作,而且在数据库访问程序完成即可测试,可以大大缩短测试时间,而且测试效果更好。

下面通过一个演示程序,演示使用Robot使用第二种测试 *** 进行数据库的并发测试。

之一步:创建演示程序

打开SQL SERVER查询分析器,在SQL SERVER测试数据库中执行下列脚本(脚本执行操作:创建表testtable,并插入一条记录;创建存储过程test): 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Test]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[Test]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[testtable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[testtable]

GO

CREATE TABLE [dbo].[testtable] (

[testid] [int] NULL ,

[counts] [int] NULL

) ON [PRIMARY]

GO

insert into testtable (testid,counts) values (1,0)

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

CREATE Procedure dbo.Test

as

declare @count int

begin tran TEST

select @count=countsfrom testtable where testid=1

update testtable setcounts=@count+1

if (@@error >0) begin

rollback tran TEST

end else begin

commit tran TEST

end

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

第二步:创建测试脚本

在Robot中新建VU脚本,输入以下内容:

 #include 

{

push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */

push Think_def = "LR";

Min_tmout = 120000; /* Set minimum Timeout_val to 2 minutes*/

push Timeout_val = Min_tmout;

ser=sqlconnect("server","sa","888","192.168.0.99","sqlserver");

set Server_connection = ser;

push Think_avg = 0;

sync_point "logon";

sqlexec ["sql_1000"] "testdb..test";

sqldisconnect (ser);

}

说明:

ser=sqlconnect("server","sa","888","192.168.0.99","sqlserver")

sa为数据库用户名,888为sa密码,192.168.0.99数据库IP地址

以上三项按实际的测试数据库设置更改,其他两项不用修改

sqlexec ["sql_1000"] "testdb..test"

testdb为新建存储过程test所在的数据库,按实际的数据库修改

第三步:执行测试

运行上一步创建的脚本(运行时自动创建Suite),在Run Suite窗口中的"Number of users"上输入20。运行完脚本,打开数据库查看counts的数值。把counts值改为零多次运行脚本,观察每次运行后counts的结果。

测试说明:

1. 测试示例程序的目的是,存储过程test每执行一次,表testtable中的counts字段增加一;

2. 第三步的测试可以发现每次执行后counts结果并不相同,而且不等于20,这说明这个程序是在并发时是问题的;

3. 将存储过程中的select @count=countsfrom testtable where testid=1修改为select @count=countsfrom testtable with (UPDLOCK) where testid=1。再次进行并发测试,每次的结果应该都是20。

以上演示程序,仅仅演示了测试的 *** 。在实际的数据库并发测试中,首先要确定存在哪些并 *** 况、哪些数据受到并发影响,然后编写脚本,设置suite进行并发测试。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/22575.html

分享给朋友:

“浅谈SQL Server数据库并发测试 *** ” 的相关文章

windows 7/8.1正在启动windows时间长的解决方法

windows 7/8.1正在启动windows时间长的解决方法

正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...

Skylake平台不能通过USB接口装windows 7系统

Skylake平台不能通过USB接口装windows 7系统

Intel会在2015年推出Broadwell、Skylake两代14nm处理器,前者可以使用9系芯片组,Skylake升级到了LGA1151插槽,需要搭配新的100系列芯片组,但初期的Skylake-S又不能超倍频,所以今年Q2季度开始会很混杂。Skylake一代会支持DDR4,100系列芯片组升...

windows 7系统件夹和文件都不显示名字如何解决

windows 7系统件夹和文件都不显示名字如何解决

假如碰到电脑里的文件夹和文件全都不显示名字了(如下图),是不是电脑中毒了呢 请教下笔者有没好的解决方法!下面是笔者给出的答案,希望能够帮助到大家! 首先打开你用来装图片的文件夹(缩略图下面的文字不显示的文件夹),然后但击工具栏上的“查看”选择“平铺”, 下面就是关键:要按住SHIFT键不...

微软为windows 7用户重新发布补丁KB2952664 帮助提升Win10升级体

微软为windows 7用户重新发布补丁KB2952664 帮助提升Win10升级体

1月13日消息,微软今天为Windows 7(SP1)用户重新推送了编号为KB2952664的更新补丁,该更新在官方KB知识库中的描述为“Windows 7系统升级兼容性更新”,用于帮助微软改进当前版本系统,提升升级到最新版Win10系统的体验。 这项更新还用于在系统中显示Windows10更新提...

Ubuntu 14.10上安装新的字体图文教程

Ubuntu 14.10上安装新的字体图文教程

像Ubuntu这种开源系统,一般都自带有好多漂亮的字体,不过假如您想使用您熟悉的字体,可以通过在Ubuntu或其它Linux系统上安装字体,帮助用户在使用开源OS平台上更好的视图体验。 软件名称:Ubuntu 14.04 官方正式版软件大小:752MB更新时间:2014-05-07 Ubun...

windows 7系统中不能把程序锁定到任务栏的解决方法图文讲解

windows 7系统中不能把程序锁定到任务栏的解决方法图文讲解

最近小编在使用Windows 7的时侯遇到一个问题,就是应用程序和快捷方式不能锁定到任务栏,我当时不知道怎么回事,但是很多现有的方法都不能解决这个问题。现在我把我的解决的方法分享给大家以作参考。 问题分析 经过思考,初步判断出现该问题的原因是由于使用第三方优化软件消除快捷方式的小箭头引起的。...