Index Advisor 是 Azure DocumentDB 內建的效能調整助理,幫助你診斷緩慢查詢、了解查詢執行行為,並實施優化的索引策略。 索引顧問會分析您的查詢結構以及收藏與索引統計數據。 Index Advisor 接著產生清晰、數據驅動的建議,並附上易讀的說明,說明為何特定指數能幫助提升績效。
Index Advisor 的優點
以下是使用 Index Advisor 的一些好處。
- 識別效能瓶頸 與低效率查詢。
- 獲得依據性能影響優先排序的可執行索引建議。
- 透過清晰、通俗易懂的說明,了解索引為何重要。
- 在擴充功能中立即套用索引推薦。
- 索引建立後自動比較前後表現。
Index Advisor 的使用案例
Index Advisor 支援多種查詢模式與優化情境,協助提升資料庫效能。
| Scenario | Description |
|---|---|
| 等式 / 範圍查詢 | 處理簡單的等式或範圍濾波器(例如, field = value 或 field > value)。 |
| 複合過濾器 / 覆蓋查詢 / 查找連結 | 分析涉及多個篩選條件或連接的查詢,這些查詢可以透過複合索引或覆蓋索引進行最佳化,用於查找查詢。 |
| 複合式索引 | 建議多欄位(複合)索引以支援複雜的查找/排序查詢 |
| 僅排序 | 識別排序操作何時可改進或由索引覆蓋。 |
| 篩選 + 排序 / 索引下壓 | 建議採用索引結構,使篩選與排序能在索引層內有效處理,減少文件掃描次數。 |
| 現有指數覆蓋 | 支援搜尋查詢;若已有索引,則不建議新增索引。 |
如果你的查詢情境不符合這些模式,請聯絡 Azure DocumentDB 團隊 ,尋求針對你特定使用情境的協助。
Prerequisites
Azure 訂用帳戶
- 如果您沒有 Azure 訂用帳戶,請建立 免費帳戶
一個現有的 Azure DocumentDB 叢集
- 如果你沒有叢集,就建立 一個新的叢集
Visual Studio Code
已安裝 DocumentDB 擴充功能
安裝了 GitHub Copilot 擴充功能,並附有有效的 GitHub Copilot 訂閱
連接到您的 Azure DocumentDB 叢集
在 Visual Studio Code 擴充功能中連接到你的 Azure DocumentDB 叢集。
在活動欄中開啟 Visual Studio Code 的 DocumentDB 擴充功能。
選擇 新增連線 以建立新的叢集連線。
選擇你的認證方式並提供所需的連接細節。
測試連接是否正常。
展開您的叢集以查看可用的資料庫與收藏。
開啟查詢以進行分析
透過 DocumentDB 擴充功能開啟查詢,開始使用 Index Advisor 進行效能分析。
在擴充功能中開啟「 尋找、 彙整」或 「計數 」查詢。
前往 查詢洞察 標籤。
執行 你的查詢。 面板顯示關鍵績效指標,如執行時間、返回的文件、被檢查的鍵及被檢查的文件。 Index Advisor 會從連接的叢集(標準模式)或預載資料(預載模式)收集並分析查詢執行計畫與統計資料。 一個語言模型(GitHub Copilot)會檢視 經過整理的 計畫與統計數據,以建議最佳索引。
Important
所有字面查詢值(例如電子郵件、數字或文字)在送交分析前會被取代為
<value>佔位符。以下是一個消毒的範例:
未被發送的未經淨化的查詢
{ "filter": { "email": "john.doe@example.com", "age": { "$gt": 25 } } }已發送的淨化查詢
{ "filter": { "email": "<value>", "age": { "$gt": "<value>" } } }
直接應用 推薦;延伸模組會建立索引並重新執行查詢以更新效能指標。
檢視 查詢統計 與 執行計畫 摘要。
探索 優化機會 清單。 每項建議都包含易讀的說明及建議的索引定義。
選擇 「套用 」以建立推薦索引。 索引建立在背景中以非同步方式執行。 完成後,面板會自動刷新並更新結果。 建立指數後,Index Advisor 會重新執行分析並 更新指標,以便你比較效能提升。
指數顧問的限制
以下是指數顧問功能的限制。
- 區域供應情況: Index Advisor 目前僅在 美國 和 加拿大 地區提供。
- 指數管理: 指數顧問只建議建立新指數;目前不建議刪除或隱藏現有索引。
- 情境覆蓋: 本版本僅優化了先前列出的支援情境。 其他查詢類型請聯絡 Azure DocumentDB 團隊 或參考 索引最佳實務。
- 資料敏感性: 將資料庫與收藏名稱視為元資料,但仍需檢視內部資料分類政策。
使用 Index Advisor 的最佳實務
以下是使用 Index Advisor 功能的最佳實務。
- 在匯出或分享統計數據時,請遵循貴組織的資料 治理政策 。
- 在應用前,請先檢視指數建議,確保其符合您的工作量與成本需求。
- 避免在未檢視相依關係或諮詢 Azure DocumentDB 團隊前手動丟棄索引。
- 如果你的查詢模式不被支援,請參考《 索引最佳實務 》以獲得指導與支援。
指數顧問的考量
Index Advisor 旨在幫助您優化查詢,同時在每個階段保護您的資料隱私。
以下清單顯示擴充功能所收集的資料:
- 查詢執行計畫 ——結構資訊與效能指標。
- 館藏統計 ——文件數量、資料與索引大小,以及索引數量。
- 索引細節 ——索引名稱、關鍵模式與使用指標。
- 叢集元資料 ——有限的資訊,例如Azure主機狀態和API類型。
合規與資料保護
為確保合規與資料保護,系統在傳送任何資訊分析前會實施以下防護措施:
- 將查詢與執行計畫中的所有 文字值 替換為
<value>。 -
保留 欄位名稱與查詢運算子(如
email、$gt、$in)以保留上下文。 - 徹底消毒 執行計畫,確保沒有敏感或個人資料殘留。
- 保留 效能指標 (例如
nReturned或executionTimeMillis),因為它們並未包含從您的數據中提取的具體值。 - 只傳送分析所需的 淨化過的結構、統計數據和元資料——絕不傳送樣本文件或原始值。
- 未來任何需要未經淨化資料的功能,都必須接受 Microsoft 的完整隱私與合規審查。
Index Advisor 只分析查詢結構和效能特性, 從不分析你的實際數據。
相關內容
- 在 Azure DocumentDB 中的分片技術
使用 MongoDB 介面連接 Azure DocumentDB