Introduzione agli strumenti statistiche di prestazioni per gli agenti di lettura Log repliche e la distribuzione di replica

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 2892631
Introduzione
Le statistiche sulle prestazioni sono state aggiunte per la mslogreader_historytable e la msdistribution_historytable nel database di distribuzione in Microsoft SQL Server. È possibile utilizzare queste statistiche per visualizzare l'andamento storico recente degli agenti di lettura Log repliche e la distribuzione di replica.

Nota Ha avuto luogo le modifiche apportate in seguito compilazioni SQL Server:
  • 9.00.4220
  • 9.00.3315
  • 10.00.1806
  • 10.00.2714

Ogni cinque minuti, le statistiche sulle prestazioni per gli agenti di lettura Log e distribuzione vengono recordedin le tabelle di cronologia. Per impostazione predefinita, viene mantenuti solo i dati delle ultime 48 ore. Un processo di pulitura rimuove i dati antecedenti a 48 ore. Il valore predefinito può essere modificato eseguendo la procedurasp_changedistributiondb memorizzati e specificando un nuovo valore per il parametro history_retention .

Di seguito è un esempio di output della tabella di cronologia per l'agente di lettura Log prestazioni:

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

Esistono tre eventi di stato che possono essere registrati:
StatoDescrizione
1Normali eventi che descrivono le prestazioni di thread sia il reader e writer.
2Generato gli eventi che si verificano quando il thread di lettura dell'agente deve attendere più a lungo tempo - messageintervaldell'agente. (Per impostazione predefinita, il tempo è 60 secondi). Se si verificano gli eventi di stato 2 che vengono registrati per un agente, ciò indica che l'agente richiede molto tempo per scrivere le modifiche alla destinazione.
3Generato gli eventi che vengono generati solo dall'agente di lettura Log quando il thread di scrittura attende più rispetto al tempo- messageinterval. Se si verificano gli eventi di stato 3 che sono registrati per l'agente di lettura Log, questo indica che l'agente richiede molto tempo per analizzare le modifiche replicate dal log delle transazioni.
Thread di lettura dell'agente di distribuzione
Le statistiche sulle prestazioni seguenti illustrano una situazione in cui vi è una latenza nella topologia di replica e in cui il collo di bottiglia è il thread di lettura dell'agente di distribuzione. Questo thread interroga il database di distribuzione (Server di distribuzione>... MSdistribution_history.Commentstable) per i comandi da applicare nel server di sottoscrizione.

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


Il tempo di attesa writer "sincelaststats" (secondi 212) appare elevato. Questo è il tempo di attesa del thread di scrittura per il thread di lettura fornire i buffer che il thread di scrittura possibile applicare al database di sottoscrizione. Thread di lettura TheDistribution agente esegue la procedurasp_MSget_repl_commands archiviati.

Se notate writer elevato nelle statistiche di prestazioni dell'agente di distribuzione tempi di attesa, è necessario verificare le prestazioni dell'esecuzione dell'agente di distribuzione rispetto al server di distribuzione e il database. In particolare, è necessario individuare il tempo di esecuzione della procedurasp_MSget_repl_commands archiviati.
Thread di scrittura dell'agente di distribuzione
Le statistiche sulle prestazioni seguenti illustrano una situazione in cui vi è una latenza nella topologia di replica e in cui il collo di bottiglia è il thread di lettura dell'agente di distribuzione. Questo thread interroga il database di distribuzione (Server di distribuzione>... La tabella MSdistribution_history.Comments) per i comandi da applicare nel server di sottoscrizione.

Nota Lo stato è 2, e l'output è diversa dalle statistiche di stato 1. 2 uno stato dati indicano che il thread di lettura ha dovuto attendere più a lungo l'agente di distribuzione configuratomessageinterval - valore. Per impostazione predefinita, il valore - messageinterval è 60 secondi.

<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 il valore messageinterval -è aumentato, potrebbe essere visualizzato nuovamente le statistiche di stato 1 analoghi ai seguenti:

<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 Il tempo di attesa di recupero di sincelaststats di secondi 505 è molto elevato.

Se notate lettore elevato nelle statistiche di prestazioni dell'agente di distribuzione tempi di attesa, è necessario verificare le prestazioni dell'esecuzione dell'agente di distribuzione in base al server di sottoscrizione e database. Utilizzare lo strumento di traccia di profiler per analizzare le prestazioni dell'esecuzione della stored procedure di replica. In genere le stored procedure vengono denominate come segue:
  • sp_Msupdownertablename>
  • sp_Msinsownertablename>
  • sp_Msdel _ownertablename>
Inoltre, per determinare se il collo di bottiglia è basata sull'hardware o basate sul sistema, utilizzare performance monitor per monitorare le prestazioni del sistema. Ad esempio, utilizzare le prestazioni al monitor i contatori disco fisico.
Thread di lettura dell'agente di lettura log
Le statistiche sulle prestazioni seguenti illustrano una situazione in cui vi è una latenza nella topologia di replica e in cui il collo di bottiglia è il thread di lettura dell'agente di lettura Log. Il thread di lettura dell'agente di lettura Log esegue la scansione del log delle transazioni del database pubblicato per i comandi da inviare al database di distribuzione.

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


La statistica di attesa sincelaststats writer di 288 secondi appare ad alta. Questo è il tempo di attesa del thread di scrittura per il thread di lettura fornire buffer da applicare. Il thread di lettura dell'agente di lettura Log esegue la procedurasp_replcmdsarchiviati. Se notate writer alto attesa thread le statistiche sulle prestazioni dell'agente di lettura Log, è necessario analizzare le prestazioni dell'esecuzione dell'agente di lettura Log rispetto al server di pubblicazione e il database e quindi esaminare il tempo di esecuzione della procedurasp_replcmds memorizzati.

Di seguito è la descrizione di ogni statistica di prestazioni:
StatisticaStatoDescrizione
StatoStato 1: Questo stato indica che il report di prestazioni è normale dopo un'operazione di commit del batch.

Stato 2: Lettore thread indica che un batch di lettura attende più tempo rispetto al valore per la proprietà messageinterval.

Stato 3: Thread di scrittura indica che un'operazione di scrittura batch attende più tempo rispetto al valore di-messageinterval .
comandi recapitati2 soloQuesto stato indica il numero di comandi che vengono letti dall'agente theDistribution.
callstogetreplcmds2 soloQuesto stato indica il numero di chiamate alla routine sp_MSget_repl_commandsarchiviati dall'agente di distribuzione.
lavoroIl valore rappresenta il tempo cumulativo che l'agente dedicato al lavoro dall'ultimo avvio dell'agente. Il tempo esclude il tempo di inattività.
inattivoIl valore rappresenta il tempo cumulativo che l'agente attende prima di chiamare la procedura sp_replcmds archiviati quando la chiamata precedente non restituisce transazioni o quando il numero delle transazioni è minore del valore della proprietà MaxTrans dall'ultimo avvio dell'agente.
recupero di lettoreIl valore rappresenta il tempo cumulativo impiegato il lettore dall'ultimo avvio dell'agente. Il tempo esclude il tempo di inattività e il tempo di attesa-per-writer.
attesa di lettoreIl valore rappresenta il tempo di attesa-per-writer cumulativo dall'ultimo avvio dell'agente. Il valore indica il tempo di attesa per il thread di scrittura è in uso il buffer di dati, il lettore compilare nuovamente il buffer di dati.
scrittura di writerIl valore rappresenta il tempo cumulativo che il writer trascorso dall'ultimo avvio dell'agente. Il tempo esclude il tempo di inattività e il tempo di attesa-per-lettore.

Per l'attesa del writer, questo valore rappresenta il tempo di attesa-per-lettore dall'ultimo avvio dell'agente. Il valore indica il tempo di attesa per il thread di lettura completare l'operazione di inserimento nel buffer di dati prima che il writer è possibile applicare il buffer di dati.
sincelaststats_elapsed_timeIl nodo sincelaststats Mostra le statistiche simili per il periodo che inizia in corrispondenza dell'ultimo evento statistiche registrate. Per impostazione predefinita, il periodo è di cinque minuti. Il tempo esclude il tempo di inattività. Il valore rappresenta il tempo trascorso dall'ultimo evento registrato stats.
lavoro sincelaststatsIl valore rappresenta il tempo per cui l'agente dopo l'ultimo evento di statistiche.
comandi sincelaststatsIl valore rappresenta il numero di comandi dopo l'ultimo evento di statistiche.
sincelaststats cmdspersecIl valore rappresenta il numero di comandi che vengono eseguiti al secondo dall'ultimo evento stats.
recupero di sincelaststats\readerIl valore rappresenta il tempo cumulativo impiegato il lettore dall'ultimo evento stats. Il tempo esclude il tempo di inattività e il tempo di attesa-per-writer.
attesa di sincelaststats\readerIl valore rappresenta il tempo di attesa-per-writer cumulativo dall'ultimo evento stats. Il valore indica il tempo di attesa per il thread di scrittura completare l'operazione utilizzando il buffer dati lettore compilare nuovamente il buffer di dati.
sincelaststats\writerRappresenta il valore di cumulativo tempo tale writer trascorso dall'ultimo evento stats. Il tempo esclude il tempo di inattività e il tempo di attesa-per-lettore.
attesa di sincelaststats\writerIl valore rappresenta il tempo di attesa-per-lettore dopo l'ultimo evento di statistiche. Il valore indica il tempo di attesa per il thread di lettura completare l'operazione di inserimento nel buffer di dati prima writer può applicare il buffer di dati.
Script per caricare MSlogreader_history ed eseguire le statistiche da dati XML in una tabella in cui è possibile cercare facilmente Sdistribution_history
Vi sono 4 Guida di esempi di script che estrarre le statistiche sulle prestazioni in una tabella permanente in cui è possibile cercare facilmente. È inoltre disponibile una stored procedure che correla circa le statistiche sulle prestazioni dell'agente di lettura Log per le statistiche sulle prestazioni dell'agente di distribuzione (ovvero, per la tabella perf_stats_tab).

Per ottenere gli esempi di script, visitareIn questo esempioFare clic su KB2892631.zipe uncompressfile KB2892631.zip, verranno visualizzati i seguenti quattro file di script:
  • Versione originale di file:perf_stats_script.sql Perf_stats_script.sql
  • Rivista Usp_move_stats_to_table.sql file: usp_move_stats_to_table.sql
  • Rivista Sp_endtoend_stats.sql file: sp_endtoend_stats.sql
  • Un altro script per leggere i dati in tempo reale o da un backup del database di distribuzione: Additional_Script.sql

Note

  • La tabella perf_stats_tab contiene le statistiche sulle prestazioni per l'agente di lettura Log e l'agente di distribuzione. Le statistiche possono recuperare in modo indipendente utilizzando il tipo in = clausola 'Distribuito' o il tipo in = clausola 'LogRead'.
  • La procedura memorizzata move_stats_to_tab apre un cursore nella tabella mslogreader_history che la tabella Sdistribution_history e quindi chiama la routine move_stats_to_tab memorizzati per ogni riga per estrarre i dati delle statistiche prestazioni XML nella tabella perf_stats_tab.

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 2892631 - Ultima revisione: 05/04/2016 10:56:00 - Revisione: 2.0

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB2892631 KbMtit
Feedback