天天看点

性能测试培训:sql server性能测试分析局部变量的性能影响1

性能测试培训:sql server性能测试分析局部变量的性能影响

   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。在poptest的loadrunner的培训中,为了提高学员性能优化的经验,加入了很多服务器方面的优化知识,为性能调优的能力打下基础。今天sqlserver的性能测试方面的知识。(大家对课程感兴趣,请加qq:564202718)

   性能测试的分析都有一定的方法和思路,这次我们来看看sqlserver方面的性能的知识。

   数据库开发者在存储过程和脚本中使用局部变量,但是,局部变量会影响查询的性能。我们创建一个表并插入一些测试数据:

USE AdventureWorks

GO

CREATE

TABLE

TempTable

(tempID UNIQUEIDENTIFIER,tempMonth 

INT

, tempDateTime DATETIME )

GO

INSERT

INTO

TempTable (tempID, tempMonth, tempDateTime)

SELECT

NEWID(),(

CAST

(100000*RAND() 

AS

INT

) % 12) + 1 ,GETDATE()

GO 100000 

-- (EXECUTE THIS BATCH 100000 TIME)

-- Create an index to support our query

CREATE

NONCLUSTERED 

INDEX

[IX_tempDateTime] 

ON

[dbo].[TempTable]

([tempDateTime] 

ASC

)

INCLUDE ( [tempID]) 

WITH

( ALLOW_ROW_LOCKS  = 

ON

, ALLOW_PAGE_LOCKS  = 

ON

ON

[

PRIMARY

]

GO

然后我们做一个简单的查询:  

SET

STATISTICS

IO 

ON

GO

SELECT

FROM

TempTable

WHERE

tempDateTime > 

'2015-10-10 03:18:01.640'

Table 'TempTable'. Scan count 1, logical reads 80, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

检查这个执行计划以及索引检索的属性,你会发现预估行数是实际行数的两倍,但并不会太影响执行计划,因为优化器选择了最合适的查询方法:

性能测试培训:sql server性能测试分析局部变量的性能影响1
性能测试培训:sql server性能测试分析局部变量的性能影响1