過時的資料庫統計資料降低 SharePoint 伺服器的效能、 造成逾時,並產生執行階段錯誤

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

按一下這裡查看此文章的英文版本:3103194
關於資料庫統計資料
查詢最佳化的統計資料是包含散發的一或多個欄中的值相關的資料表或索引的檢視的統計資訊的物件。查詢最佳化器會使用這些統計資料來估計基數,或在查詢中資料列的數字產生結果。這些基數評估可讓查詢最佳化器建立高品質的查詢計劃。

例如,查詢最佳化器可以改善效能,使用基數估計選取索引搜尋運算子,而非較耗資源的索引掃描運算子的查詢。否則,過期的統計資料可能會降低查詢效能,藉由使用效率不佳的查詢計劃。

大型企業 SharePoint 部署必須要有更新內容存放在 Microsoft SQL Server 的資料庫上的資料庫統計資料的資料庫維護計劃。客戶不應該依賴只 SharePoint 為基礎的資料庫來執行這些工作的維護工作。如需詳細資訊,請參閱 在 SharePoint 伺服器伺服陣列中的 SQL Server 的最佳作法.
徵狀
資料庫統計資料過時,SharePoint 伺服器安裝可能會遇到下列一或多個下列的徵狀:
  • 緩慢的載入時間,可能會產生 HTTP 500 錯誤,當您開啟網站] 網頁的效能降低
  • 會產生類似下面的錯誤訊息的速度較慢效能:

    服務無法使用

    未知的 SQL 例外狀況 53

    伺服器錯誤在 '/' 應用程式的執行階段錯誤
  • 原因未預期的 SQL Server 效能、 資料庫鎖定和封鎖 preforming 搜尋耙梳
  • 長時間執行計時器工作,例如"Microsoft SharePoint 基礎使用狀況資料處理"工作會變得較長的時間完成每個反覆項目期間
  • 無法開啟 SharePoint 網站及類似下列的錯誤訊息:

    未預期的 System.Web.HttpException: 要求已逾時
  • 當您載入巡覽和下列的錯誤訊息時,站台轉譯逾時:

    PortalSiteMapProvider 無法取得節點的子系
  • 在處理 SharePoint 查詢時,正在執行 SQL Server 的伺服器上的高 CPU 使用率
發生的原因
這些問題可能被因過時的資料庫統計資料。SharePoint 會執行每日的計時器工作,使用proc_updatestatistics的 SQL 程序,以更新資料庫統計資料。不過,基於各種原因,此計時器工作可能無法完成,或可能不一致更新所有的資料表。例如,如果備份對內容資料庫中,從 SQL Server 的執行與 SharePoint 計時器工作,工作將不會繼續。

更新統計資料的 SharePoint 計時器工作完成時,可能會寫入 ULS 記錄下列事件:
  • e9bf 「 更新資料庫 {0} 中的統計資料時發生錯誤 」
  • cm1y 「 更新統計資料在資料庫中,{0} 」
  • dbl2"跳過統計資料更新的資料庫 {0} 因為它的狀態為 {1}"
  • cm1x 「 更新統計資料在 {0} 上的所有資料庫中 」
如果這些條件不密切監視,而且未採取矯正措施,資料庫統計資料過時,並最後會發生 SharePoint 效能問題。
解決方案
若要防止這些徵狀和潛在的服務中斷,SQL Server 維護計劃應該實作將使用 FULLSCAN 選項更新的 SharePoint 內容的資料庫統計資料。如需詳細資訊,請參閱 索引統計資料.

在實作 SQL Server 維護計劃,以更新您的 SharePoint 資料庫上的統計資料時,它並不需要停用 [從 SharePoint 工作。不過,由於這些維護工作會執行類似的函式,從兩個位置,並允許停用計時器工作,從 SharePoint 伺服陣列。如需有關如何從 SharePoint 伺服器中管理索引更新作業的詳細資訊,請參閱 SharePoint 所使用的資料庫擁有過時索引統計資料 (SharePoint 2013).
其他相關資訊
更新的 SharePoint 內容資料庫的統計資料,使用 [FULLSCAN] 選項中的,每天從 SQL Server 是建議的最佳作法。如需詳細資訊,請參閱 在 SharePoint 伺服器伺服陣列中的 SQL Server 的最佳作法 el 資料庫維護的 SharePoint 基礎 2010.

不過,如果您的 SharePoint 陣列目前遇到效能問題,因為過期的統計資料,下列的資訊可以用於單次緩和步驟可以改善這個問題。

若要顯示特定的資料庫中的資料庫統計資料資訊,請執行下列查詢:
-- Checking the DB Statsselect a.id as 'ObjectID', isnull(a.name,'Heap') as 'IndexName', b.name as 'TableName', stats_date (id,indid) as stats_last_updated_time from sys.sysindexes as a inner join sys.objects as b on a.id = b.object_id where b.type = 'U'
如需有關資料庫統計資料的檢閱的詳細資訊,請參閱 DBCC SHOW_STATISTICS.

若要更新資料庫統計資料,在單一資料庫使用 FULLSCAN 選項,請執行下列查詢:
-- Update DB StatsEXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN'
重要注意事項"Sp_MSforeachtable"選項是一種未記載的程序所 「 現狀 」 提供,應該只用於減輕立即的問題。不建議您定期維護計劃的一部份,使用此程序。相反地,請參閱我們更新統計資料 (交易 SQL) 有關如何實作計劃,以更新統計資料,使用 FULLSCAN 選項的文件。

根據過時如何將已成為資料庫的統計資料,您可能要清除所執行的查詢計畫快取 DBCC FREEPROCCACHE 更新資料庫統計資料之後的命令。您可以找到的語法和此程序中的引數 DBCC FREEPROCCACHE (交易 SQL).如此一來可確保新的查詢在更新資料庫統計資料之後,會使用最佳的執行計劃就行了。例如,請參閱下列查詢:
-- Remove all elements from the plan cacheDBCC FREEPROCCACHE
重要注意事項執行 DBCC FREEPROCCACHE 命令會清除所有查詢計劃中的 SQL 執行個體中的快取。這個命令應能充分了解在實際執行的時段內執行它之前。

如果 DBCC FREEPROCCACHE 未執行命令,更新過期的資料庫統計資料後,效率不佳的執行計劃與查詢可能仍然存在於快取中,並使用。如果發生這種情形,使用強制執行指定的預存程序重新編譯預存程序 (請參閱 sp_recompile (考慮改用 SQL)).例如,請參閱下列查詢:
USE SP2013_Content_DBGOsp_recompile proc_getwebnavstruct
執行sp_recompile 與程序、 函式或資料表參數的命令目標,而不會影響執行個體移除的快取中的單一項目。

警告:本文為自動翻譯

內容

文章識別碼:3103194 - 最後檢閱時間:10/10/2015 21:46:00 - 修訂: 1.0

Microsoft SharePoint Server 2013, Microsoft SharePoint Server 2010, Microsoft Office SharePoint Server 2007

  • kbqfe kbsurveynew kbexpertisebeginner kbbug kbfix kbtshoot kbmt KB3103194 KbMtzh
意見反應