30.06.2013 Views

Performance Tuning with SQL Server Dynamic Management Views

Performance Tuning with SQL Server Dynamic Management Views

Performance Tuning with SQL Server Dynamic Management Views

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 7: OS and Hardware Interaction<br />

As an example usage, the query in Listing 7.11 will return the cache hit ratio from the<br />

buffer manager.<br />

DECLARE @object_name SYSNAME<br />

SET @object_name = CASE WHEN @@servicename = 'MS<strong>SQL</strong>SERVER' THEN '<strong>SQL</strong><strong>Server</strong>'<br />

ELSE 'MS<strong>SQL</strong>$' + @@serviceName<br />

END + ':Buffer Manager'<br />

DECLARE<br />

@PERF_LARGE_RAW_FRACTION INT ,<br />

@PERF_LARGE_RAW_BASE INT<br />

SELECT @PERF_LARGE_RAW_FRACTION = 537003264 ,<br />

@PERF_LARGE_RAW_BASE = 1073939712<br />

SELECT dopc_fraction.object_name ,<br />

dopc_fraction.instance_name ,<br />

dopc_fraction.counter_name ,<br />

--when divisor is 0, return I return NULL to indicate<br />

--divide by 0/no values captured<br />

CAST(dopc_fraction.cntr_value AS FLOAT)<br />

/ CAST(CASE dopc_base.cntr_value<br />

WHEN 0 THEN NULL<br />

ELSE dopc_base.cntr_value<br />

END AS FLOAT) AS cntr_value<br />

FROM sys.dm_os_performance_counters AS dopc_base<br />

JOIN sys.dm_os_performance_counters AS dopc_fraction<br />

ON dopc_base.cntr_type = @PERF_LARGE_RAW_BASE<br />

AND dopc_fraction.cntr_type = @PERF_LARGE_RAW_FRACTION<br />

AND dopc_base.object_name = dopc_fraction.object_name<br />

AND dopc_base.instance_name = dopc_fraction.instance_name<br />

AND ( REPLACE(dopc_base.counter_name,<br />

'base', '') = dopc_fraction.counter_name<br />

--Worktables From Cache has "odd" name where<br />

--Ratio was left off<br />

OR REPLACE(dopc_base.counter_name,<br />

'base', '') = ( REPLACE(dopc_fraction.counter_name,<br />

'ratio', '') )<br />

)<br />

WHERE dopc_fraction.object_name = @object_name<br />

AND dopc_fraction.instance_name = ''<br />

AND dopc_fraction.counter_name = 'Buffer cache hit ratio'<br />

282

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!