View a markdown version of this page

使用索引的最佳實務 - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用索引的最佳實務

建置索引

將資料匯入 Amazon DocumentDB 時,您應該在匯入大型資料集之前建立索引。您可以使用 Amazon DocumentDB Index Tool 從執行中的 MongoDB 執行個體或 mongodump 目錄擷取索引,並在 Amazon DocumentDB 叢集中建立這些索引。如需遷移的詳細指導方針,請參閱遷移至 Amazon DocumentDB

索引選擇性

我們建議您限制建立索引的欄位,其中重複值的數目會小於集合中文件總數的 1%。例如,如果您的集合包含 100,000 個文件,則只會在相同值發生 1,000 次或更少的欄位上建立索引。

選擇具有大量唯一值 (即高基數) 的索引可確保篩選操作傳回少量文件,從而在索引掃描期間產生良好的效能。高基數索引範例像是唯一索引,它可以保證相等述詞最多只能傳回單一文件。低基數索引的範例像是布林欄位,以及對一週中某天的索引。由於效能不佳,資料庫的查詢最佳化工具不太可能選擇低基數索引。同時,低基數索引會繼續消耗磁碟空間和 I/O 等資源。根據經驗法則,您應該在典型值頻率為總集合大小的 1% 或更小的字段上鎖定索引。

此外,建議只在通常用作篩選器的欄位上建立索引,並定期尋找未使用的索引。如需詳細資訊,請參閱如何分析索引用量並識別未使用的索引?

索引對寫入資料的影響

雖然索引可以透過避免掃描集合中的每個文件來改善查詢性能,但此改進方式有所權衡。對於集合上的每個索引,每次插入、更新或刪除文件時,資料庫必須更新集合並將欄位寫入集合的每個索引。例如,如果集合有九個索引,資料庫必須先執行十次寫入,才能確認用戶端的作業。因此,每個額外的索引都會產生額外的寫入延遲、I/O,並增加整體使用的儲存。

叢集執行個體的大小必須適當,才能保留所有工作集記憶體。如此可避免從儲存磁碟區持續讀取索引頁面的需求,進而對效能造成負面影響,並產生較高的 I/O 成本。如需詳細資訊,請參閱執行個體大小

為了獲得最佳效能,請盡量減少集合中的索引數目,只新增必要的索引,以改善常見查詢的效能。雖然工作負載有所不同,但好的指導方針是將每個集合的索引數目保持在五個或更少。

識別缺少的索引

識別缺少的索引是最佳實務,我們建議定期執行。如需詳細資訊,請參閱如何識別缺少的索引?

識別未使用的索引

識別和移除未使用的索引是我們建議定期執行的最佳實務。如需詳細資訊,請參閱如何分析索引用量並識別未使用的索引?