如何解决高并发 代码

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

-------

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

-------

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

drop procedure [dbo.Test]

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

CREATE Procedure dbo.Test

as

declare @count int

begin tran TEST

select @count = counts from testtable where testid = 1

update testtable set counts = @count +1

if(@@error > 0) begin

rollback tran TEST

end else begin

commit tran TEST

end

GO

SET QUOTED_IDETIFIER OFF

GO

SET ANSI_NULLS ON

GO

  第二步:创建测试脚本:在Robot中新建VU脚本,输入以下内容:

#include

{

push Timeout_scale = 200; /*Set timeout 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_connect = 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为数据库用户名,888sa密码,192.168.0.99数据库IP地址

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

sqlexec["sql_1000"] "testdb.test"

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

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

 

你可能感兴趣的:(如何解决高并发 代码)