Introdução às ferramentas de estatísticas de desempenho de leitura do registo de replicação e de distribuição de replicação

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 2892631
Introdução
Estatísticas de desempenho foram adicionadas a mslogreader_historytable e msdistribution_historytable da base de dados de distribuição no Microsoft SQL Server. Pode utilizar estas estatísticas para ver o histórico recente de desempenho dos agentes de leitura do registo de replicação e distribuição de replicação.

Nota Estas alterações foram primeiros efectuadas nos seguintes compilações do SQL Server:
  • 9.00.4220
  • 9.00.3315
  • 10.00.1806
  • 10.00.2714

Em cinco minutos, as estatísticas de desempenho para os agentes de leitura do registo e de distribuição são recordedin as tabelas do histórico. Por predefinição, apenas os dados para os últimos 48 horas são mantidos. Um processo de limpeza remove os dados com mais de 48 horas. O valor predefinido pode ser alterado, executar o procedimento armazenadosp_changedistributiondb e especificando um novo valor para o parâmetro history_retention .

Segue-se uma saída de desempenho de exemplo da tabela para o Log Reader Agent histórico:

<stats state="1" work="9" idle="295">  <reader fetch="8" wait="0"/>  <writer write="9" wait="0"/>  <sincelaststats elapsedtime="304" work="9" cmds="52596" cmdspersec="5753.000000">    <reader fetch="8" wait="0"/>    <writer write="9" wait="0"/>  </sincelaststats></stats> 

Existem três eventos de estado que podem ser registados:
EstadoDescrição
1Eventos normais que descrevem o leitor e escritor de desempenho de threads.
2É desencadeado eventos que ocorrem quando o thread de leitor de um agente aguarda mais do que o tempo de -messageintervaldo agente. (Por predefinição, a hora é 60 segundos.) Se notar que os eventos de estado 2 que são registados para um agente, isto indica que o agente está a demorar muito tempo a escrever alterações para o destino.
3É desencadeado eventos que são gerados apenas por Log Reader Agent quando o thread de escritor aguarda mais do que o tempo- messageinterval. Se notar que os eventos de estado 3 que são registados para o Log Reader Agent, isto indica que o agente está a demorar muito tempo a digitalizar as alterações replicadas do registo de transacções.
Thread de leitor de agente de distribuição
As estatísticas de desempenho seguintes demonstram uma situação em que haja latência na topologia de replicação e no qual o congestionamento é o thread de leitor de agente de distribuição. Este thread consultas a (de base de dados de distribuiçãoServidor de distribuição>... MSdistribution_history.Commentstable) para comandos aplicam-se no subscritor.

<stats state="1" work="14798" idle="2035">
<reader fetch="14798" wait="193"></reader>
<writer write="12373" wait="9888"></writer>
<sincelaststats elapsedtime="424" work="415" cmds="296900" cmdspersec="713.000000">
<reader fetch="415" wait="7"></reader>
<writer write="377" wait="212"></writer>
</sincelaststats>
</stats>


O tempo de espera do escritor de "sincelaststats" (212 segundos) é apresentada a alto. Este é o tempo que aguarda o thread de escrita para o thread de leitor fornecer as memórias intermédias que o thread de escrita pode ser aplicadas à base de dados do subscritor. O thread de leitor de agente de canalização própria executa o procedimento armazenadosp_MSget_repl_commands .

Se notar escritor alto tempos nas estatísticas de desempenho de agente de distribuição de espera, deverá investigar o desempenho da execução de agente de distribuição contra o servidor de distribuição e a base de dados. Em particular, deverá investigar o tempo de execução do procedimento armazenadosp_MSget_repl_commands .
Thread de escrita de agente de distribuição
As estatísticas de desempenho seguintes demonstram uma situação em que haja latência na topologia de replicação e no qual o congestionamento é o thread de leitor de agente de distribuição. Este thread consultas a (de base de dados de distribuiçãoServidor de distribuição>... Tabela de MSdistribution_history.Comments) para comandos aplicam-se no subscritor.

Nota O estado é 2, e a saída é ligeiramente diferente de estatísticas de estado 1. Estado 2 Estado dados indicam que o thread de leitor teve de esperar mais do que o agente de distribuição configurado- messageinterval valor. Por predefinição, o valor de -messageinterval é 60 segundos.

<stats state="2" fetch="48" wait="384" cmds="1028" callstogetreplcmds="321">
<sincelaststats elapsedtime="312" fetch="47" wait="284" cmds="1028" cmdspersec="3.000000"></sincelaststats>
</stats>


Se o valor de -messageintervalfor aumentado, poderá receber novamente as estatísticas de estado 1 semelhantes à seguinte:

<stats state="1" work="1941" idle="0">
<reader fetch="717" wait="1225"></reader>
<writer write="1941" wait="134"></writer>
<sincelaststats elapsedtime="764" work="764" cmds="1170730" cmdspersec="1530.000000">
<reader fetch="258" wait="505"></reader>
<writer write="764" wait="50"></writer>
</sincelaststats>
</stats>


Nota O tempo de espera de obtenção de sincelaststats de 505 segundos for muito elevado.

Se notar que o leitor alta tempos nas estatísticas de desempenho de agente de distribuição de espera, deverá investigar o desempenho da execução de agente de distribuição contra o servidor de assinante e a base de dados. Utilize a ferramenta de rastreio do profiler para investigar o desempenho da execução dos procedimentos armazenado de replicação. Normalmente, os procedimentos armazenados são denominados do seguinte modo:
  • sp_MSupd_ownertablename>
  • sp_MSins_ownertablename>
  • sp_MSdel_ownertablename>
Além disso, para determinar se o congestionamento é baseado em hardware ou no sistema, utilize o monitor de desempenho para monitorizar o desempenho do sistema. Por exemplo, utilize o desempenho do monitor para os contadores de disco físico.
Thread de leitor de serviço de leitura do registo
As estatísticas de desempenho seguintes demonstram uma situação em que haja latência na topologia de replicação e no qual o congestionamento é o thread de leitor de Log Reader Agent. O thread de leitor Log Reader Agent analisa o registo de transacções de base de dados publicada para os comandos entregar na base de dados de distribuição.

<Distribution server="">... MSlogreader_history.Comments

</Distribution>
<stats state="1" work="301" idle="0">
<reader fetch="278" wait="0"></reader>
<writer write="12" wait="288"></writer>
<sincelaststats elapsedtime="301" work="301" cmds="104500" cmdspersec="347.000000">
<reader fetch="278" wait="0"></reader>
<writer write="12" wait="288"></writer>
</sincelaststats>
</stats>


A estatística de espera do escritor de sincelaststats de 288 segundos aparece elevada. Este é o tempo que o thread de escritor aguarda para fornecer as memórias intermédias para aplicar o thread de leitor. O thread de leitor Log Reader Agent executa o procedimento armazenadosp_replcmds. Se notar escritor alto aguardar threads nas estatísticas de desempenho de Log Reader Agent, devem investigar o desempenho da execução Log Reader Agent contra o servidor de publicação e a base de dados e, em seguida, investigue o tempo de execução do procedimento armazenadosp_replcmds .

Segue-se a descrição de cada estatística de desempenho:
EstatísticaEstadoDescrição
EstadoEstado 1: Este estado indica que o mapa de desempenho é habitual após confirmação de uma secção.

Estado 2: O leitor thread indica que um lote ler aguarda tempo mais longo que o valor para a propriedade messageinterval.

Estado 3: Thread de escrita indica que uma operação de escrita de batch aguarda tempo mais longo que o valor de-messageinterval .
cmdsapenas 2Este estado indica o número de comandos que são lidos por canalização própria agente.
callstogetreplcmdsapenas 2Este estado indica o número de chamadas para o procedimento armazenado sp_MSget_repl_commandspelo agente de distribuição.
trabalhoO valor representa o tempo cumulativo que o agente de gasto no trabalho, desde o último início de agente. O tempo exclui o tempo de inactividade.
inactivoO valor representa o tempo cumulativo que o agente aguarda para chamar o procedimento armazenado sp_replcmds quando a chamada anterior devolve não existem transacções ou quando o número de transacções é menor que o valor para a propriedade MaxTrans desde o último início de agente.
obtenção de leitorO valor representa o tempo cumulativo que o leitor gasto desde o último início de agente. O tempo exclui o tempo de inactividade e o tempo de espera para writer.
espera do leitorO valor representa o tempo de espera para impressão acumulado desde o último início de agente. O valor mostra a hora em que é gasto a aguardar que o thread de escrita concluir a utilização da memória intermédia de dados antes do leitor poderá preencher novamente a memória intermédia de dados.
escrita de escritorO valor representa o tempo cumulativo que o escritor demorou desde o último início de agente. O tempo exclui o tempo de inactividade e o tempo de espera para o leitor.

Para aguardar escritor, este valor representa o tempo de espera para o leitor desde o último início de agente. O valor mostra a hora em que é gasto a aguardar que o thread de leitor concluir o preenchimento da memória intermédia de dados antes do escritor pode aplicar a memória intermédia de dados.
sincelaststats_elapsed_timeO nó de sincelaststats mostra estatísticas semelhantes para o período com início no último evento de estatísticas gravada. Por predefinição, o período é de cinco minutos. O tempo exclui o tempo de inactividade. O valor representa o tempo decorrido desde o último evento de estatísticas gravada.
sincelaststats trabalhoO valor representa o tempo que o agente de gasto desde o último evento de estatísticas.
sincelaststats cmdsO valor representa o número de comandos desde o último evento de estatísticas.
sincelaststats cmdspersecO valor representa o número de comandos que são executados por segundo desde o último evento de estatísticas.
fetch de sincelaststats\readerO valor representa o tempo cumulativo que o leitor gasto desde o último evento de estatísticas. O tempo exclui o tempo de inactividade e o tempo de espera para writer.
espera de sincelaststats\readerO valor representa o tempo de espera para impressão acumulado desde o último evento de estatísticas. O valor mostra a hora em que é gasto a aguardar que o thread de escrita concluir a utilização da memória intermédia de dados antes do leitor poderá preencher novamente a memória intermédia de dados.
sincelaststats\writerO valor representa o cumulativa tempo esse escritor gasto desde o último evento de estatísticas. O tempo exclui o tempo de inactividade e o tempo de espera para o leitor.
espera de sincelaststats\writerO valor representa o tempo de espera para o leitor desde o último evento de estatísticas. O valor mostra a hora em que é gasto a aguardar que o thread de leitor concluir o preenchimento da memória intermédia de dados antes do escritor pode aplicar a memória intermédia de dados.
Script para carregar MSlogreader_history e MSdistribution_history executar estatísticas a partir de dados XML numa tabela que podem ser consultados facilmente
Não existem 4 ajuda de amostras de script que extrair as estatísticas de desempenho para uma tabela permanente que pode ser facilmente consultada. Existe também um procedimento armazenado que aproximadamente correlaciona as estatísticas de desempenho do Log Reader Agent para as estatísticas de desempenho do agente de distribuição (ou seja, para a tabela de perf_stats_tab).

Para obter exemplos de scripts, visiteEste exemploe clique em KB2892631.zipe, em seguida, uncompressfile KB2892631.zip, verá os seguintes quatro ficheiros de script:
  • Versão original da file:perf_stats_script.sql Perf_stats_script.sql
  • Revista de Usp_move_stats_to_table.sql de ficheiro: usp_move_stats_to_table.sql
  • Revista de Sp_endtoend_stats.sql de ficheiro: sp_endtoend_stats.sql
  • Outro script para ler os dados em tempo real ou a partir de uma cópia de segurança de base de dados de distribuição: Additional_Script.sql

Notas

  • A tabela perf_stats_tab contém as estatísticas de desempenho para o Log Reader Agent e o agente de distribuição. As estatísticas podem ser consultadas independentemente utilizando o tipo onde = cláusula 'Distrib' ou o tipo de onde = cláusula 'LogRead'.
  • O procedimento de move_stats_to_tab armazenados abre um cursor sobre a tabela de mslogreader_history e a tabela de msdistribution_history e, em seguida, chama o procedimento de move_stats_to_tab armazenados para cada linha para extrair os dados de estatísticas de desempenho de XML para a tabela perf_stats_tab.

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 2892631 - Última Revisão: 05/04/2016 10:58:00 - Revisão: 2.0

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB2892631 KbMtpt
Comentários