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

OLAP 效能監測與優化全攻略:Profiler/系統監視器/Extended Events/DMV 四大工具 + 三大優化策略

     編輯:關於SqlServer

監測工具箱:四大神器

1. SQL Server Profiler (追蹤)

  • 捕獲 SSAS 執行個體事件 (MDX 查詢、命令、錯誤、安全稽核)。
  • 預定義範本:`TSQL_Duration`、`MDX_Query`、`Deadlock_Graph` 等。
  • 輸出至檔案/資料表,支援重播 (Replay) 比較效能基準。
  • 關鍵事件類別:`Query Begin/End`、`Command Begin/End`、`Progress Report Begin/End`、`Lock Deadlock`。

2. 系統監視器 / 效能監視器

  • 即時監控本地/遠端 SSAS 執行個體、OS、硬體計數器。
  • 核心計數器:
    • `MSAS:Memory\Memory Usage KB` / `Memory Limit KB` / `Memory Shrinkable KB`
    • `MSAS:Proc\Current Connections` / `Commands/sec` / `Query Pool Busy Threads`
    • `Processor\% Processor Time` / `Disk\Avg. Disk sec/Read` / `Network\Bytes Total/sec`
  • 可建立「資料收集器集合」自動記錄、設定警示。
  • **定位瓶頸利器,但不告知根因** (需結合 Profiler/DMV)。

3. Extended Events (XEvents) — 輕量級、可擴展

  • SSAS 事件直接整合進 SQL Server XEvents 架構,T-SQL 管理 (`CREATE EVENT SESSION`)。
  • 事件範例:`query_begin`、`query_end`、`command_begin`、`deadlock`、`memory_pressure`。
  • 目標:`event_file` (檔案)、`ring_buffer` (記憶體)、`event_counter` (統計)。
  • 優點:極低負擔、可篩選 predicate、支援歷史回溯。

4. 動態管理視圖 (DMV) — 內建健康檢查

  • 所有 DMV 位於 `$System` 結構描述:`$System.DISCOVER_SESSIONS`、`$System.DISCOVER_COMMANDS`、`$System.DISCOVER_MEMORY_USAGE`、`$System.DISCOVER_STORAGE_TABLES` 等。
  • 查詢方式:`SELECT * FROM $System.DISCOVER_SESSIONS;` (需 XMLA 連線)。
  • 關鍵 DMV:
    • `DISCOVER_SESSIONS`:目前連線、執行命令、記憶體用量。
    • `DISCOVER_COMMANDS`:執行中/歷史命令、耗時、狀態。
    • `DISCOVER_MEMORY_USAGE`:記憶體物件細目 (快取、彙總、索引)。
    • `DISCOVER_STORAGE_TABLES`:分區儲存統計 (列數、大小、壓縮率)。

優化三板斧

1. 索引策略:覆蓋查詢、填充因子 100%

  • 關聯資料庫 (RDBMS) 端:為彙總查詢常用維度/事實鍵建立**覆蓋索引** (`INCLUDE` 度量值)。
  • 唯讀/以讀為主環境:**填充因子 100%**,最大化頁面密度、減少 I/O。
  • 定期 `sys.dm_db_index_usage_stats` / `sys.dm_db_index_physical_stats` 掃描:刪除未用索引、重建碎片 >30% 索引。

2. 彙總設計:從低增益起步、遞減曲線、Usage-Based 優化

  • 彙總設計精靈:初始「效能增益」設低 (如 10-20%),觀察查詢速度提升 vs 儲存增長。
  • **收益遞減規律**:前 30% 增益通常佔 80% 速度提升;追求 100% 增益會導致儲存爆炸性增長。
  • **Usage-Based Optimization 精靈**:匯入真實查詢日誌 (`QueryLog`),依實際存取模式產生彙總,**成熟系統必用**。
  • 新系統無日誌 → 先用設計精靈,累積日誌後轉 Usage-Based。

3. 主動快取:MOLAP 效能 + ROLAP 即時性

  • MOLAP:查詢快,但處理週期性 → 資料延遲。
  • ROLAP:即時查詢關聯庫,但慢。
  • **主動快取**:
    • 預設 MOLAP 服務查詢。
    • 偵測資料變更 (輪詢/通知) → 自動切換 ROLAP 讀取最新資料 → 背景重建 MOLAP → 切回。
    • 設定:分區屬性 `ProactiveCaching` → `SilenceInterval` (靜默間隔)、`Latency` (容忍延遲)、`Source` (輪詢/通知)。

實戰檢查清單

階段動作工具/指令
基線建立記錄正常負載下 CPU/記憶體/查詢延遲 P95PerfMon + XEvents (ring_buffer 7 天)
日常巡檢檢視 `DISCOVER_SESSIONS` 長跑查詢、`DISCOVER_MEMORY_USAGE` 記憶體壓力DMV 查詢腳本排程
變更前擷取代表性 MDX 查詢集 (Profiler/QueryLog)Profiler 範本 `MDX_Query`
變更後重播查詢集比較延遲、資源用量Profiler Replay / XEvents 比對
彙總調優執行 Usage-Based Optimization 精靈,檢視增益/儲存曲線SSMS → 彙總設計
主動快取驗證模擬資料變更,觀察切換延遲、查詢正確性手動更新事實表 + MDX 查詢

總結

**監測四件套**各司其職:Profiler 看語句、PerfMon 看資源、XEvents 看事件流、DMV 看內部狀態。**優化三板斧**針對儲存引擎核心:索引覆蓋、彙總遞減曲線、主動快取雙模。建立「基線→巡檢→變更驗證→彙總迭代」閉環,OLAP 效能才能持續在線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved