本文将为大家介绍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 |
阐明:
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进行并发测验。
【修改引荐】
- 用并行查询让SQL Server加快运转
- 削减SQL Server数据库死锁的办法
- MySQL***高并发网站实战攻略
知优网 » 浅谈SQL Server数据库并发测验办法(数据库 并发测试)