您在 SQL Server 2005 中執行某些資料庫維護作業或定期的交易作業之後,您可能會遇到查詢效能的降低

文章翻譯 文章翻譯
文章編號: 917828 - 檢視此文章適用的產品。
Bug #: 329155 (SQLBUDT)
全部展開 | 全部摺疊

徵狀

在 Microsoft SQL Server 2005 中之後,您可能會遇到查詢效能的降低您執行某些資料庫維護作業或定期的交易作業。比方說您可能會注意到查詢效能的突然降低您還原資料庫備份之後。

開始 SQL Server 2005 Service Pack 2 您會注意到訊息,例如下列 SQL Server 錯誤記錄檔中這個問題發生時:
2006-10-15 06:03:29.330 spid59 SQL Server 遇到 cachestore 排清的 4 occurrence(s) '物件計劃' cachestore (計劃快取的一部份) 由於到某些資料庫維護或重新設定作業。
2006-10-15 06:03:29.420 spid59 SQL Server 遇到 cachestore 排清的 4 occurrence(s) 'SQL 計畫' cachestore (計劃快取的一部份) 由於到某些資料庫維護或重新設定作業。
2006-10-15 06:03:29.420 spid59 SQL Server 遇到 4 occurrence(s) cachestore 排清的繫結樹 cachestore (計劃快取的一部份) 由於到某些資料庫維護或重新設定作業。
但是,您可以執行 DBCC FREEPROCCACHE 命令或 [DBCC FREESYSTEMCACHE] 指令,以清除程序快取。如果程序快取已清空,藉由執行這些指令之一的數字,您會注意到如下所示,在 SQL Server 錯誤記錄檔中的訊息:
2006-12-14 11:37:03.57 spid53 SQL Server 遇到 1 occurrence(s) 的 cachestore 清除 'SQL 計畫 ' cachestore (計劃快取的一部份) 由於至 ' DBCC FREEPROCCACHE ' 或 ' DBCC FREESYSTEMCACHE' 作業。
2006-12-14 11:37:03.57 spid53 SQL Server 遇到 1 occurrence(s) 的 cachestore 對齊界限樹 cachestore (計劃快取的一部份) 由於至 'DBCC FREEPROCCACHE ' 或 ' DBCC FREESYSTEMCACHE' 作業。
因此,您可以檢查 SQL Server 錯誤記錄檔,以判斷問題是否因本文所述的問題。

附註在 Microsoft SQL Server 2008 中,不會發生這種行為。

發生的原因

某些資料庫維護作業或定期的交易作業清除整個程序快取,就會發生這個問題。

狀況說明

這種行為是經過設計規劃的。

其他相關資訊

在下列情況中會執行特定資料庫層級操作時,會清除整個程序快取:
  • 資料庫有 AUTO_CLOSE 資料庫選項設成 ON。 當沒有使用者連接參考,或使用資料庫時,背景工作會嘗試關閉,並自動關閉資料庫。
  • 您可以執行幾個查詢針對具有預設選項的資料庫。然後,資料庫會被卸除。
  • 來源資料庫的資料庫快照集便會遭到捨棄。

    附註資料庫快照集只是 Microsoft SQL Server 2005 企業版中可用的。
  • 您可以變更資料庫狀態至 OFFLINE 或上線。
  • 您成功地重建資料庫的交易記錄檔。
  • 還原資料庫備份。
  • 執行 DBCC CHECKDB 陳述式。

    附註是僅在早於 SQL Server 2005 SP2 的版本的 SQL Server 2005 中一樣。您安裝 SQL Server 2005 SP2 或更新版本之後,則當您執行 DBCC CHECKDB 陳述式不被清空 「 整個程序快取。
  • 卸離資料庫]。
  • 您指定下列選項之一,當您執行資料庫 ALTER 陳述式:
    • 離線
    • 線上
    • 修改預設檔案群組
    • MODIFY_NAME
    • 修改檔案群組 READ_WRITE
    • 自動分頁
    • 修改檔案群組 READ_ONLY
    • READ_ONLY
    • READ_WRITE
  • 如果下列的伺服器選項的其中一個變更由 RECONFIGURE 陳述式,被清除整個程序快取:
    • 跨資料庫擁有權鏈結
    • 索引建立記憶體 (KB)
    • 遠端查詢逾時 (s)
    • 使用者選項
    • 最大文字複寫大小 (B)
    • 平行處理原則的成本臨界值
    • 最大平行度
    • 每個查詢 (KB) 的最小記憶體
    • 查詢等待 (s)
    • 最小伺服器記憶體 (MB)
    • 最大伺服器記憶體 (MB)
    • 查詢管理者成本限制
    附註如果並不會變更實際的值或最大伺服器記憶體伺服器選項新的值設為 0,將不會清除程序快取。
如果您遇到這個問題時,您注意到下列值中的變更當您使用效能監視器來收集資料從 SQL Server 2005 效能計數器:
  • 效能物件:處理程序
    計數器: %處理器時間
    執行個體: sqlservr

    此計數器的值將會因為增加 CPU 活動的增加。基本上,如果發生這個問題,被清除整個程序快取。因此,後續的要求必須產生新的計劃要快取。這種行為會稍微增加 CPU 活動。
  • 效能物件:SQLServer:plan 快取
    計數器:快取物件計數
    執行個體: _Total

    效能物件:SQLServer:plan 快取
    計數器:快取頁面
    執行個體: _Total

    這些計數器的值將會突然降低。

    附註對於 SQL Server 2005 的具名的執行個體,效能物件被命名為 MSSQL $ InstanceName: 計劃快取。
  • 效能物件:SQLServer:SQL 統計資料
    計數器:SQLCompilations/秒

    此計數器的值將會大幅增加這個意外事件發生之後。

    附註對於 SQL Server 2005 的具名的執行個體,效能物件被命名為 MSSQL $ InstanceName: SQL 統計資料。
如果您使用 SP:CacheRemove 事件來擷取 SQL Profiler 追蹤,您注意到這個問題發生時此事件產生下列 TextData 資料行值:
整個程序快取區清除"

屬性

文章編號: 917828 - 上次校閱: 2009年2月17日 - 版次: 7.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Express Edition with Advanced Services
關鍵字:?
kbmt kbsql2005engine kbexpertiseadvanced kbtshoot kbprb KB917828 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:917828
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com