Scripts para teste de desempenho

De MSTECH wiki
Ir para: navegação, pesquisa
Versão 1.0 de 06/12/2016

Queries

Queries mais demoradas

 1 SELECT --TOP 20 
 2        SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS [Avg CPU Time(us)],
 3        SUBSTRING(CONVERT(CHAR(23), DATEADD(ms,(SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count))/1000,0), 121), 12,23) AS [Avg CPU Time(formatado)],
 4        SUM(query_stats.execution_count) AS [Count Execucoes],
 5        MAX(query_stats.last_execution_time) AS [Ultima Execucao],
 6        MIN(creation_time) AS [Inicio Execucao],
 7        MAX(max_elapsed_time) AS [Tempo Decorrido(us)],
 8        SUBSTRING(CONVERT(CHAR(23), DATEADD(ms,(MAX(max_elapsed_time))/1000,0), 121), 12,23) AS [Tempo Decorrido(formatado)],
 9        SUBSTRING(CONVERT(CHAR(23), DATEADD(ms,(MIN(query_stats.total_worker_time))/1000,0), 121), 12,23) AS [Minimo CPU Time],
10        SUBSTRING(CONVERT(CHAR(23), DATEADD(ms,(MAX(query_stats.total_worker_time))/1000,0), 121), 12,23) AS [Maximo CPU Time],
11        MIN(query_stats.databaseId) AS [DatabaseId],
12        MIN(query_stats.DBNAME) AS [Database],
13        MIN(query_stats.statement_text) AS [Instrucao Resumida], 
14        MIN(query_stats.FullStatement_Text) AS [Instrucao Completa]
15 FROM 
16        (SELECT 
17              QS.*
18              , SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
19                     ((CASE statement_end_offset
20                            WHEN -1 THEN DATALENGTH(st.text)
21                            ELSE QS.statement_end_offset END
22                            - QS.statement_start_offset)/2) + 1) AS statement_text 
23              , ST.text as FullStatement_Text         
24              , COALESCE(DB_NAME(st.dbid), DB_NAME(CAST(pa.value as int)),'Resource') AS DBNAME
25              , pa.value AS databaseId 
26        FROM sys.dm_exec_query_stats AS QS
27        CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST 
28        OUTER APPLY sys.dm_exec_plan_attributes(plan_handle) pa 
29        WHERE 
30              pa.attribute = 'dbid' 
31              --informar uma data no formato aaaammdd (ano, mês e dia)
32              --and QS.last_execution_time >= '20160101' 
33              --informar o nome da base de dados que deseja pesquisar 
34              and COALESCE(DB_NAME(st.dbid), DB_NAME(CAST(pa.value as int)),'Resource') = 'OnCorretor' 
35              and (ST.text not like '%sys.%') 
36              and (ST.text not like '%\[sys\].%' escape '\') 
37        ) as query_stats 
38 GROUP BY query_stats.query_hash, query_stats.DBNAME 
39 ORDER BY 1 DESC,4 ;

Querie kill

 1 USE master
 2 GO
 3 declare @spid int
 4 declare @db_name varchar(100)
 5 set @db_name = 'OnCorretor' -- coloque o nome da base aqui
 6 declare spid cursor for
 7 select spid
 8 from master.dbo.sysprocesses(nolock)
 9 where dbid = db_id(@db_name) and spid > 50
10 union
11 select distinct request_session_id
12 from sys.dm_tran_locks (nolock)
13 where resource_database_id = db_id(@db_name) and request_session_id > 50
14 open spid
15 fetch next from spid into @spid
16 while @@fetch_status = 0
17 begin
18 exec ('kill ' + @spid)
19 fetch next from spid into @spid
20 end