首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 批編譯、重新編譯與計劃緩存機制深度解析(一)

     編輯:關於SqlServer

白皮書使命:三大受眾、雙版本對比

  • 用戶:使用/維護/開發 SQL Server 應用,特別是 2000 遷移者
  • 開發人員:內核背景知識參考
  • 測試/項目經理:編譯重編譯功能驗收依據

全文對比 SQL Server 2000 vs 2005 行為差異,所有語句適用於雙版本。

核心定義:編譯 vs 重新編譯

  • 批處理:含 SELECT/INSERT/UPDATE/DELETE、存儲過程調用、T-SQL 控制結構、DDL、權限語句、CLR 結構
  • 編譯:批處理 → 查詢計劃集合,存入計劃緩存(Plan Cache,舊稱過程緩存)
  • 重新編譯:執行前檢查計劃有效性/最優性,失敗則重新編譯對應語句或整批次

關鍵點:無需預先緩存也可觸發重新編譯(如大文本批次創建臨時表插入第 7 行觸發重編譯,但因體積大不緩存)。

重新編譯的雙重性

  • 多數有據:保證正確性、適應數據變化獲取最優計劃
  • 過度重編譯:嚴重拖慢執行速度,需主動減少

里程碑創新:語句級重新編譯

語句級重編譯消除了「為避免長存儲過程重編譯罰分而強行拆分」的歷史包袱,架構設計更自由。

觀測工具箱

文中介紹多種工具輔助編譯/重編譯/緩存/重用過程觀測,後續章節將詳細展開。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
維度SQL Server 2000SQL Server 2005
重編譯範圍整個批處理所有語句僅觸發語句
CPU/內存消耗高顯著降低
編譯塊碎片多少
存儲過程拆分壓力為減輕罰分而拆分無需拆分