Deze stored procedure toont de slechtst presterende queries op basis van CPU, Execution Count,
I/O en Elapsed_Time, met informatie uit de DMV’s. Zo zie je de slechtst
presterende queries per instance of per database. Het aantal getoonde records,
de database en de sortering geef je mee als parameters.
Performance is erg belangrijk voor je SQL-rapporten of applicaties. Met deze eenvoudige procedure vind je de slechtst presterende SQL-queries.
Parameters
Je kunt drie parameters aan deze procedure meegeven: @DBNAME, @COUNT
en @ORDERBY. Met @DBNAME beperk je de uitvoer tot één database. Zet je
deze parameter bij het aanroepen van de SP op een databasenaam, dan zie je alleen statements
die bij die database horen. Zet je @DBNAME niet,
dan geeft deze SP rijen terug van elke database. Met de parameter @COUNT bepaal je
hoeveel rijen deze SP teruggeeft. Gebruik je deze parameter, dan krijg je alleen de
TOP x rijen terug, waarbij x gelijk is aan @COUNT, op basis van de parameter @ORDERBY.
Met de parameter @ORDERBY bepaal je waarop de teruggegeven rijen aflopend worden gesorteerd.
Deze parameter @ORDERBY ondersteunt de volgende waarden: CPU, AE, TE, EC of AIO, TIO, ALR, TLR, ALW, TLW, APR en TPR
waarbij “ACPU” staat voor Average CPU Usage
“TCPU” staat voor Total CPU usage
“AE” staat voor Average Elapsed Time
“TE” staat voor Total Elapsed Time
“EC” staat voor Execution Count
“AIO” staat voor Average IOs
“TIO” staat voor Total IOs
“ALR” staat voor Average Logical Reads
“TLR” staat voor Total Logical Reads
“ALW” staat voor Average Logical Writes
“TLW” staat voor Total Logical Writes
“APR” staat voor Average Physical Reads
“TPR” staat voor Total Physical Read
Voorbeelden van aanroepen
Top 6 statements in de database AdventureWorks op basis van Average CPU Usage
EXEC usp_Worst_TSQL @DBNAME='AdventureWorks',@COUNT=6,@ORDERBY='ACPU'Top 100 statements gesorteerd op Average Logical Read
EXEC usp_Worst_TSQL @COUNT=100,@ORDERBY='ALR'Toon de top 100 statements op Average IO
EXEC usp_Worst_TSQL;Veelgestelde vragen
Hoe vind ik de traagste queries in SQL Server?
Gebruik de stored procedure usp_Worst_TSQL. Die toont de slechtst presterende queries op basis van CPU, execution count, I/O en elapsed time, met informatie uit de DMV's.
Welke parameters accepteert usp_Worst_TSQL?
Er zijn drie parameters: @DBNAME beperkt de uitvoer tot één database, @COUNT bepaalt het aantal rijen en @ORDERBY bepaalt de aflopende sortering.
Welke waarden voor @ORDERBY ondersteunt usp_Worst_TSQL?
Onder andere ACPU en TCPU voor CPU, AE en TE voor elapsed time, EC voor execution count, AIO en TIO voor I/O, en ALR, TLR, ALW, TLW, APR en TPR voor logical reads, writes en physical reads.
Hoe toon ik de top 6 queries op gemiddelde CPU voor één database?
Draai EXEC usp_Worst_TSQL @DBNAME='AdventureWorks',@COUNT=6,@ORDERBY='ACPU'. Dat geeft de zes statements met het hoogste gemiddelde CPU-gebruik in AdventureWorks.
Kan usp_Worst_TSQL naar een hele instance kijken?
Ja. Laat je @DBNAME leeg, dan geeft de procedure rijen voor elke database terug. Je kunt de slechtste queries per instance of per database bekijken.
Reacties
Gerelateerde blogs
Verloren klanten berekenen met T-SQL
DateDiff berekenen met alleen weekdagen of werkdagen
T-SQL - Een voortschrijdend totaal over 4 weken maken