Você está offline; aguardando reconexão

Introdução às ferramentas de estatísticas de desempenho para agentes do leitor de Log de replicação e distribuição de replicação

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 2892631
Introdução
Estatísticas de desempenho foram adicionadas para o mslogreader_historytable e o msdistribution_historytable no banco de dados de distribuição no Microsoft SQL Server. Você pode usar essas estatísticas para ver o histórico recente do desempenho dos agentes do leitor de Log de replicação e distribuição de replicação.

Observação: Essas alterações foram primeira feitas nos seguintes compilações do SQL Server:
  • 9.00.4220
  • 9.00.3315
  • 10.00.1806
  • 10.00.2714

A cada cinco minutos, as estatísticas de desempenho para os agentes de distribuição e o leitor de Log são recordedin as tabelas do histórico. Por padrão, somente os dados para os últimos 48 horas são mantidos. Um processo de limpeza remove os dados que são mais de 48 horas. O valor padrão pode ser alterado ao executar o procedimentosp_changedistributiondb armazenados e especificando um novo valor para o parâmetro history_retention .

A seguir está um exemplo de saída de desempenho da tabela de histórico para o Log Reader Agent:

<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> 

Há três eventos de estado que podem ser registrados:
EstadoDescrição
1Eventos normais que descrevem o leitor e gravador de desempenho de segmento.
2Gerados eventos que ocorrem quando o thread de leitor do agente espera mais que o tempo de -messageintervaldo agente. (Por padrão, o tempo é 60 segundos). Se você observar o estado 2 eventos que são registrados para um agente, isso indica que o agente está levando muito tempo para gravar as alterações para o destino.
3Gerados eventos que são gerados apenas pelo Log Reader Agent quando o thread de gravador espera mais que o tempo- messageinterval. Se você observar o estado 3 eventos que são registrados para o Log Reader Agent, isso indica que o agente está demorando muito tempo para examinar as alterações replicadas do log de transações.
Thread de leitor do agente de distribuição
As estatísticas de desempenho a seguir demonstram uma situação na qual há latência na topologia de replicação e no qual o gargalo é o thread de leitor do agente de distribuição. Esse thread consultas no (banco de dados de distribuiçãoServidor de distribuição>... MSdistribution_history.Commentstable) para comandos aplicar no assinante.

<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 gravador "sincelaststats" (212 segundos) aparece alto. Esta é a hora em que o thread de gravador aguarda a thread de leitor fornecer buffers que o thread de gravador pode aplicar no banco de dados do assinante. Thread de leitor TheDistribution agente executa o procedimentosp_MSget_repl_commands armazenados.

Se você observar alto gravador esperar horas nas estatísticas de desempenho do agente de distribuição, você deve investigar o desempenho da execução do agente de distribuição contra o banco de dados e servidor de distribuição. Em particular, você deve investigar o tempo de execução do procedimentosp_MSget_repl_commands armazenados.
Thread de gravador do agente de distribuição
As estatísticas de desempenho a seguir demonstram uma situação na qual há latência na topologia de replicação e no qual o gargalo é o thread de leitor do agente de distribuição. Esse thread consultas no (banco de dados de distribuiçãoServidor de distribuição>... MSdistribution_history.Comments tabela) para comandos aplicar no assinante.

Observação: O estado é 2 e o resultado é um pouco diferente de estatísticas de estado 1. 2 estado dados indicam que o thread de leitor teve que aguardar mais do que o agente de distribuição configurado valor- messageinterval . Por padrão, o valor - 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 - messageintervalfor aumentado, você pode receber novamente as estatísticas de estado 1 semelhantes aos seguintes:

<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>


Observação: O tempo de espera de busca de sincelaststats de 505 segundos é muito alto.

Se você observar alto leitor esperar horas nas estatísticas de desempenho do agente de distribuição, você deve investigar o desempenho da execução do agente de distribuição contra o servidor do assinante e o banco de dados. Use a ferramenta de rastreamento do profiler para investigar o desempenho da execução dos procedimentos armazenados de replicação. Geralmente os procedimentos armazenados são nomeados da seguinte maneira:
  • sp_MSupd_ownertablename>
  • sp_MSins_ownertablename>
  • sp_MSdel_ownertablename>
Além disso, para determinar se o afunilamento é baseado em hardware ou sistema, use o monitor de desempenho para monitorar o desempenho do sistema. Por exemplo, use o desempenho do monitor para monitor os contadores de disco físico.
Thread de leitor do Log Reader Agent
As estatísticas de desempenho a seguir demonstram uma situação na qual há latência na topologia de replicação e no qual o gargalo é o thread de leitor de Log Reader Agent. O thread de leitor de Log Reader Agent examina o log de transações do banco de dados publicado para comandos enviar para o banco 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 sincelaststats gravador de 288 segundos aparece alta. Esta é a hora em que o thread de gravador aguarda a thread de leitor fornecer buffers para aplicar. O thread de leitor de Log Reader Agent executa o procedimentosp_replcmdsarmazenados. Se você notar gravador alto espera threads nas estatísticas de desempenho de Log Reader Agent, você deve investigar o desempenho da execução do Log Reader Agent contra o banco de dados e servidor de publicação e investigue o tempo de execução do procedimentosp_replcmds armazenados.

A seguir está a descrição de cada estatística de desempenho:
EstatísticaEstadoDescrição
EstadoEstado 1: Este estado indica que o relatório de desempenho é normal após uma confirmação do lote.

Estado 2: Thread indica que um lote de leitura do leitor espera mais tempo do que o valor para a propriedade messageinterval.

Estado 3: Thread de gravador indica que uma gravação em lote aguarda um tempo maior que o valor- messageinterval .
comandos2 somenteEste estado indica o número de comandos que são lidos pelo agente de theDistribution.
callstogetreplcmds2 somenteEste estado indica o número de chamadas para o procedimento sp_MSget_repl_commandsarmazenados pelo agente de distribuição.
trabalhoO valor representa o tempo cumulativo que o agente gasto no trabalho desde o último início do agente. O tempo exclui o tempo ocioso.
tempo ociosoO valor representa o tempo cumulativo que o agente espera para chamar o procedimento sp_replcmds armazenados quando a chamada anterior não retorna nenhuma transação ou quando o número de transações é menor que o valor da propriedade MaxTrans desde o último início do agente.
busca de leitorO valor representa o tempo cumulativo que o leitor gasto desde o último início do agente. O tempo exclui o tempo ocioso e o tempo de espera para o gravador.
espera de leitorO valor representa o tempo de espera para o gravador cumulativo desde o último início do agente. O valor mostra o tempo gasto aguardando o segmento de gravador terminar de usar o buffer de dados antes que o leitor pode preencher o buffer de dados novamente.
gravação de gravadorO valor representa o tempo cumulativo o gravador gastou desde o último início do agente. O tempo exclui o tempo ocioso e o tempo de espera para o leitor.

Para aguardar o gravador, esse valor representa o tempo de espera para o leitor desde o último início do agente. O valor mostra o tempo gasto aguardando o thread de leitor ao terminar de preencher o buffer de dados para que o gravador pode aplicar o buffer de dados.
sincelaststats_elapsed_timeO nó sincelaststats mostra estatísticas semelhantes para o início do período no último evento gravado estatísticas. Por padrão, o período é de cinco minutos. O tempo exclui o tempo ocioso. O valor representa o tempo decorrido desde o último evento gravado estatísticas.
trabalho sincelaststatsO valor representa a hora em que o agente gasto desde o último evento de estatísticas.
comandos de sincelaststatsO 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.
busca de sincelaststats\readerO valor representa o tempo cumulativo que o leitor gasto desde o último evento de estatísticas. O tempo exclui o tempo ocioso e o tempo de espera para o gravador.
espera de sincelaststats\readerO valor representa o tempo de espera para o gravador cumulativo desde o último evento de estatísticas. O valor mostra o tempo gasto aguardando o segmento de gravador terminar de usar o buffer de dados antes que o leitor pode preencher o buffer de dados novamente.
sincelaststats\writerO valor representa o cumulativa tempo esse gravador gastou desde o último evento de estatísticas. O tempo exclui o tempo ocioso 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 o tempo gasto aguardando o thread de leitor ao terminar de preencher o buffer de dados antes de aplica o buffer de dados gravador.
Script para carregar MSlogreader_history e MSdistribution_history executar estatísticas de dados XML em uma tabela que pode ser consultada facilmente
Há 4 ajuda de amostras de script que extrair as estatísticas de desempenho em uma tabela permanente que pode ser consultada facilmente. Também é um procedimento armazenado que correlaciona aproximadamente as estatísticas de desempenho do Log Reader Agent para as estatísticas de desempenho do agente de distribuição (isto é, a tabela de perf_stats_tab).

Para obter exemplos de script, visiteEste exemploe clique em KB2892631.zipe uncompressfile KB2892631.zip, você verá os seguintes quatro arquivos de script:
  • Versão original do file:perf_stats_script.sql Perf_stats_script.sql
  • Revisado Usp_move_stats_to_table.sql arquivo: usp_move_stats_to_table.sql
  • Revisado Sp_endtoend_stats.sql arquivo: sp_endtoend_stats.sql
  • Outro script para ler os dados em tempo real ou a partir de um backup de banco de dados de distribuição: Additional_Script.sql

Observações:

  • 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 por meio do qual tipo = 'Pacote de Distrib' cláusula ou tipo onde = 'LogRead' cláusula.
  • O procedimento armazenado de move_stats_to_tab abre um cursor na tabela mslogreader_history e a tabela de msdistribution_history e, em seguida, chama o procedimento move_stats_to_tab armazenado para cada linha para extrair os dados de estatísticas de desempenho do XML na 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
d"; document.getElementsByTagName("head")[0].appendChild(m);