您目前已離線,請等候您的網際網路重新連線

複寫記錄讀取器 」 和 「 複寫散發代理程式的效能統計資料工具簡介

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:2892631
簡介
效能統計資料已加入的 mslogreader_historytable 和 msdistribution_historytable,在 Microsoft SQL Server 在散發資料庫。您可以使用這些統計資料,以查看最近的複寫記錄讀取器 」 與 「 複寫散發代理程式的效能記錄。

注意這些變更是第一個 SQL Server 在下列建置 ︰
  • 9.00.4220
  • 9.00.3315
  • 10.00.1806
  • 10.00.2714

每隔五分鐘,記錄讀取器和散發代理程式的效能統計資料是 recordedin 歷程資料表。根據預設,只有過去 48 小時內的資料會被保留。清理程序會移除超過 48 小時的資料。執行sp_changedistributiondb預存程序,並指定新的值給history_retention參數,就可以變更預設值。

以下是從記錄讀取器代理程式歷程資料表效能輸出範例 ︰

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

有三個狀態事件可以記錄 ︰
狀態描述
1描述 [讀取] 和 [寫入器執行緒效能的一般事件。
2引發代理程式的讀取器執行緒在等待時間超過代理程式的-messageinterval時間時所發生的事件。(根據預設,時間是 60 秒)。如果您發現記錄代理程式的狀態 2 事件時,這表示代理程式花很長的時間,將變更寫入目的地。
3引發事件時寫入器執行緒在等待時間超過-messageinterval時間,只是由 「 記錄讀取器代理程式 」 所產生的。如果您發現記錄,記錄讀取器代理程式的狀態 3 事件時,這表示代理程式正在掃描從交易記錄複寫的變更很長的時間。
散發代理程式讀取器執行緒
下列效能統計資料會示範在其中沒有延遲和複寫拓樸中的瓶頸是散發代理程式 」 的讀取器執行緒的情況。此執行緒會查詢散發資料庫 (散發伺服器>..MSdistribution_history.Commentstable) 套用在 「 訂閱者 」 的命令。

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


"Sincelaststats"的寫入器等待時間 (212 秒) 會出現高。這是寫入器執行緒會等候讀取器執行緒提供緩衝區寫入器執行緒可以適用於 「 訂閱者 」 資料庫的時間。TheDistribution 代理程式讀取器執行緒執行sp_MSget_repl_commands預存程序。

如果您注意到高的寫入器等待在散發代理程式的效能統計資料中的時間,您應該調查對資料庫與散發伺服器的散發代理程式 」 執行的效能。特別的是,您應該調查sp_MSget_repl_commands預存程序的執行時間。
散發代理程式寫入器執行緒
下列效能統計資料會示範在其中沒有延遲和複寫拓樸中的瓶頸是散發代理程式 」 的讀取器執行緒的情況。此執行緒會查詢散發資料庫 (散發伺服器>..MSdistribution_history.Comments 資料表) 的 「 訂閱者 」 所套用的命令。

注意狀態為 2,而輸出為些微的不同狀態 1 統計資料。狀態 2 狀態資料可讓您指出讀取器執行緒必須等待時間超過 「 散發代理程式設定值-messageinterval 。根據預設, -messageinterval值為 60 秒。

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


-Messageinterval值會遞增,如果您一次可能會收到類似下列的狀態 1 統計資料 ︰

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


注意Sincelaststats 擷取等候時間的 505 秒是非常高。

如果您注意到高的讀取器等待在散發代理程式的效能統計資料中的時間,您應該調查散發代理程式 」 執行,對 「 訂閱者 」 伺服器和資料庫的效能。您可以使用 [程式碼剖析工具追蹤工具來調查的複寫預存程序的執行效能。通常預存程序命名,如下所示 ︰
  • sp_MSupd_ownertablename>
  • sp_MSins_ownertablename>
  • sp_MSdel_ownertablename>
此外,如果以判斷瓶頸是硬體或系統為基礎,您可以使用 「 效能監視器來監視系統效能。例如,使用效能監視器的實體磁碟計數器。
記錄讀取器代理程式讀取器執行緒
下列效能統計資料會示範在其中沒有延遲和複寫拓樸中的瓶頸就是記錄讀取器代理程式 」 的讀取器執行緒的情況。記錄讀取器代理程式 」 的讀取器執行緒會掃描發行的資料庫交易記錄檔傳送到散發資料庫的命令。

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


Sincelaststats 寫入器等候統計資料的 288 秒就會出現高。這是寫入器執行緒會等候讀取器執行緒,提供要套用的緩衝區的時間。記錄讀取器代理程式 」 的讀取器執行緒執行sp_replcmds預存程序。如果您發現高的寫入器等待在記錄讀取器代理程式的效能統計資料中的執行緒時,您應該調查記錄讀取器代理程式 」 執行,對出版物伺服器和資料庫的效能,並再調查sp_replcmds預存程序的執行時間。

每個效能統計資料的描述如下 ︰
統計資料狀態描述
狀態狀態 1 ︰ 此狀態指出的批次認可之後,效能報告是一般。

狀態 2 ︰ 讀取器執行緒會指出批次讀取會等候值長的時間 messageinterval 屬性。

狀態 3 ︰ 批次寫入會等候較長的時間,比-messageinterval值指示寫入器執行緒。
命令只有 2此狀態指出讀取 theDistribution 代理程式的命令數目。
callstogetreplcmds只有 2此狀態指出 「 散發代理程式 」 的sp_MSget_repl_commands預存程序的呼叫程的序數。
工作值代表在工作花費自上次的代理程式啟動後的 「 代理程式 」 的累計時間。時間不包括閒置的時間。
閒置值代表累積等待的時間,代理程式呼叫sp_replcmds預存程序,當先前的呼叫會傳回沒有交易或自上次的代理程式啟動後的交易數目會小於MaxTrans屬性的值。
讀取器擷取值代表自上次的代理程式啟動後的讀取器所花的累計時間。閒置的時間和寫入器等待的時間,則會排除的時間。
讀取器等候值代表自上次的代理程式啟動後的累計的寫入器的等候時間。值會顯示到完稿一路使用之前讀取器可以重新填入資料緩衝區的資料緩衝區寫入器執行緒正在等待花費的時間。
寫入器寫入值代表自上次的代理程式啟動後的寫入器所花的累計時間。閒置的時間與讀取器等候的時間,則會排除的時間。

是寫入器等待中,這個值表示自上次的代理程式啟動後的讀取器等候的時間。值會顯示花費在讀取器執行緒完成時填入資料緩衝區寫入器可以套用的資料緩衝區之前所等待的時間。
sincelaststats_elapsed_time[Sincelaststats] 節點會顯示類似統計資料期間的開始,在最後一個記錄的統計資料事件。根據預設值,句點為五分鐘。時間不包括閒置的時間。值代表,自上次錄製的統計資料事件後所經歷的時間。
sincelaststats 工作值代表自上次的統計資料事件後的 「 代理程式 」 所花費的時間。
sincelaststats 的命令值代表自上次的統計資料事件後的命令數目。
sincelaststats cmdspersec值代表每秒自上次的統計資料事件後所執行的命令的數目。
sincelaststats\reader 擷取值代表自上次的統計資料事件後的讀取器所花費的累計時間。閒置的時間和寫入器等待的時間,則會排除的時間。
sincelaststats\reader 等待值代表自上次的統計資料事件後累計的寫入器等待的時間。值會顯示到完稿一路使用之前讀取器可以重新填入資料緩衝區的資料緩衝區寫入器執行緒正在等待花費的時間。
sincelaststats\writer值代表累積時間自上次的統計資料事件後所花費的寫入器。閒置的時間與讀取器等候的時間,則會排除的時間。
sincelaststats\writer 等待值代表自上次的統計資料事件後的讀取器等候的時間。值會顯示花費在讀取器執行緒完成時填入資料緩衝區寫入器可以套用的資料緩衝區之前所等待的時間。
若要載入 MSlogreader_history 和 MSdistribution_history 執行從 XML 資料的統計資料,可以輕易地查詢的資料表的指令碼
有了 4 的指令碼範例說明,您可以輕易地查詢的永久資料表擷取的效能統計資料。另外還有大約相互關聯記錄讀取器代理程式效能統計資料,散發代理程式的效能統計資料的預存程序 (也就是在 perf_stats_tab 資料表)。

若要取得指令碼範例,請造訪這個範例再利用KB2892631.zip,然後按一下 [uncompressfile KB2892631.zip,您會看到下列四個指令碼檔案 ︰
  • 原始版本的 Perf_stats_script.sql file:perf_stats_script.sql
  • 修改過的 Usp_move_stats_to_table.sql 檔案 ︰ usp_move_stats_to_table.sql
  • 修改過的 Sp_endtoend_stats.sql 檔案 ︰ sp_endtoend_stats.sql
  • 無法讀取資料,以即時或從散發資料庫備份的另一個指令碼 ︰ Additional_Script.sql

注意事項

  • Perf_stats_tab 資料表包含同時記錄讀取器代理程式 」 和 「 散發代理程式的效能統計資料。可以單獨查詢統計資料,使用其中型別 = '分散' 子句或其中型別 = 'LogRead' 子句。
  • Move_stats_to_tab 預存程序會開啟 mslogreader_history 和 msdistribution_history 資料表中的資料指標,並接著呼叫每個資料列的 move_stats_to_tab 預存程序,以便插入 perf_stats_tab 資料表擷取 XML 效能統計資料。

警告:本文為自動翻譯

內容

文章識別碼:2892631 - 最後檢閱時間:05/04/2016 12:17:00 - 修訂: 2.0

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB2892631 KbMtzh
意見反應
om/ms.js"> /html>