Implementamos alguns recursos usando o service broker e implantamos recentemente na produção. Estou observando que o contador "Stored Procedures Invoked/sec" está sempre aumentando. No entanto, posso ver que outros contadores, como Tarefas em execução, etc., estão estáveis. Por que os procedimentos armazenados invocados/s não se atêm a um intervalo?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Existem vários tipos diferentes de contadores de desempenho, cinco dos quais são usados pelo SQL Server (pelo menos em termos do que você encontrará no
sys.dm_os_performance_counters
DMV). Você pode ver isso através da seguinte consulta:Retorna:
Esses valores significam:
Tipos de contadores não computacionais
65792
== PERF_COUNTER_LARGE_RAWCOUNT == "Valor bruto do contador que não requer cálculos e representa uma amostra que é apenas o último valor observado."Tipos de contador de algoritmo de contador
272696576
== PERF_COUNTER_BULK_COUNT == "Número médio de operações concluídas durante cada segundo do intervalo de amostragem."1073874176
== PERF_AVERAGE_BULK == "Número de itens processados, em média, durante uma operação. Esse tipo de contador exibe uma proporção dos itens processados (como bytes enviados) para o número de operações concluídas e requer uma propriedade base com PERF_AVERAGE_BASE como o tipo de contador."Tipos de contador de base
1073939712
== PERF_LARGE_RAW_BASE == "Valor base encontrado no cálculo de PERF_RAW_FRACTION"Tipos de contador de algoritmo básico
537003264
== PERF_LARGE_RAW_FRACTION == "Proporção de um subconjunto para seu conjunto como uma porcentagem. Este tipo de contador exibe apenas a porcentagem atual, não uma média ao longo do tempo."Você pode encontrar mais informações na seguinte postagem do blog: Interpreting the counter values from sys.dm_os_performance_counters
Os contadores Stored Procedures Invoked/sec na categoria SQLServer:Broker Activation são do tipo 272696576 (ou seja, "PERF_COUNTER_BULK_COUNT"). Esses valores são cumulativos. Você precisa capturar um valor em uma variável, aguardar N segundos (ou seja
WAITFOR DELAY '00:00:30'; -- 30 seconds
, ), capturar um segundo valor e, em seguida, dividir a diferença entre os valores por N (ou seja,SELECT (@var2 - @var1) / 30.0;
). Por exemplo: