本文将为大家介绍SQL Server数据库并发测试方法,包括利用测试工具模拟多个最终用户进行并发测试、利用测试工具编写脚本,直接连接数据库进行并发测试等等方法。

1. 运用测验东西模仿多个最终用户进行并发测验;

浅谈SQL Server数据库并发测验办法(数据库 并发测试)  SQL Server 并发 测试 第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进行并发测验。

【修改引荐】

  1. 用并行查询让SQL Server加快运转
  2. 削减SQL Server数据库死锁的办法
  3. MySQL***高并发网站实战攻略
转载请说明出处
知优网 » 浅谈SQL Server数据库并发测验办法(数据库 并发测试)

发表评论

您需要后才能发表评论