WEB开发网
开发学院数据库MSSQL Server SQL Server性能调教系列(4)--Profiler(下) 阅读

SQL Server性能调教系列(4)--Profiler(下)

 2010-09-27 00:00:00 来源:WEB开发网   
核心提示: b. 加载.dll中间语言代码到DBUSEmaster;CREATEASSEMBLYSQLSignatureFROM'C:\SQLSignature\SQLSignature\bin\Debug\SQLSignature.dll';c. 注册函数fn_SQLSigCLR和fn_R

b. 加载.dll中间语言代码到DB

USE master; 
CREATE ASSEMBLY SQLSignature 
FROM 'C:\SQLSignature\SQLSignature\bin\Debug\SQLSignature.dll';

c. 注册函数fn_SQLSigCLR和fn_RegexReplace

CREATE FUNCTION dbo.fn_SQLSigCLR(@querystring AS NVARCHAR(MAX)) 
RETURNS NVARCHAR(MAX) 
WITH RETURNS NULL ON NULL INPUT 
EXTERNAL NAME SQLSignature.SQLSignature.fn_SQLSigCLR; 
GO 
 
CREATE FUNCTION dbo.fn_RegexReplace( 
 @input    AS NVARCHAR(MAX), 
 @pattern   AS NVARCHAR(MAX), 
 @replacement AS NVARCHAR(MAX)) 
RETURNS NVARCHAR(MAX) 
WITH RETURNS NULL ON NULL INPUT 
EXTERNAL NAME SQLSignature.SQLSignature.fn_RegexReplace; 
GO

d. 注册完成之后,用下面代码测试:

SELECT 
 dbo.fn_SQLSigCLR(tsql_code) AS sig_sql, 
 duration 
FROM dbo.Workload;

结果的SQL全被模式化,井号(#)替代所有的参数。

(2) 以用上面建立的函数,模式化追踪的T-SQL语句,并分类汇总。

a. 以用查询签名,为每个字符串生成整数的校验和(CheckSum),方便以后的汇总计算,提高效率:

ALTER TABLE dbo.Workload ADD cs INT NOT NULL DEFAULT (0); 
GO 
UPDATE dbo.Workload 
 SET cs = CHECKSUM(dbo.fn_SQLSigCLR(tsql_code)); 
 
CREATE CLUSTERED INDEX idx_cl_cs ON dbo.Workload(cs);

上一页  1 2 3 4 5  下一页

Tags:SQL Server 性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接