本指南包含使用最新版本 Python SDK for Azure Cosmos DB for NoSQL 所建解決方案的最佳實務。 此處所包含的最佳實務有助於提升延遲、提升可用性,並提升整體效能。
帳號設定
- 請務必盡可能在與 Azure Cosmos DB 帳戶相同的 Azure 區域中執行應用程式,以減少延遲。 在你的帳戶中啟用 2+ 區域的複製功能,以獲得 最佳可用性。 針對生產工作負載,啟用服務受控容錯移轉。 若沒有此設定,帳號在寫入區域中斷期間會失去寫入可用性,因為手動故障轉移無法成功,原因是區域連線不足。 想了解更多如何使用 Python SDK 新增多個區域的資訊,請參閱 全域發行教學。
SDK 使用方式
- 請一律使用 Azure Cosmos DB SDK 的最新版本,以獲得最佳效能。
- 在應用程式的整個生命週期內只使用一個
CosmosClient實例,以提升效能。 - 設定
preferred_locations的配置在 Cosmos 用戶端。 在故障轉移時,寫入操作會被送往目前的寫入區域,所有讀取則送往你偏好位置清單中的第一個區域。 欲了解更多區域故障轉移機制,請參閱 可用性故障排除。 - 暫時性錯誤是一種具有根本原因但即將自行解決的錯誤。 連接到資料庫的應用程式應設計為能夠處理這些暫時性錯誤。 若要處理這些錯誤,請在其程式碼中實作重試邏輯,而不是對使用者呈現為應用程式錯誤。 SDK 有內建的邏輯,可處理這類可重試要求 (例如讀取或查詢作業) 的暫時性失敗。 SDK 無法在寫入遇到暫態失敗時進行重試,因寫入操作不是冪等的。 SDK 可讓使用者設定節流的重試邏輯。 如需了解哪些錯誤需要重試的詳細資訊,請點此。
- 使用 SDK 日誌來 擷取診斷資訊 並排除延遲問題。
資料設計
- 指定作業的要求費用會直接與文件大小相互關聯。 建議您減少文件的大小,因為對大型文件的作業成本較對小文件的作業成本更高。
- 有些字元有限制,不能用於某些識別碼:'/'、'\'、'?'、#'。 一般建議不要在資料庫名稱、集合名稱、項目識別碼或分割區索引鍵這類識別碼中使用任何特殊字元,以避免發生任何非預期的行為。
- Azure Cosmos DB 索引政策也允許你指定哪些文件路徑要包含或排除,透過索引路徑來進行索引。 確保將未使用的路徑排除於索引編製外,以加快寫入速度。 欲了解更多資訊,請參閱 使用 SDK 範例建立索引。
宿主特徵
- 由於用戶端電腦上的資源不足,您可能會遇到連線能力/可用性問題。 監視執行 Azure Cosmos DB 用戶端之節點的 CPU 使用率,並在使用量很高時擴大/縮小。
- 如果使用虛擬機器來執行應用程式,請在 VM 上啟用加速網路,以協助排解因高流量而產生的瓶頸,並減少延遲或 CPU 抖動。 您也可能想要考慮使用高端虛擬機器,其最大 CPU 使用率低於 70%。
- 預設會以 100 個項目或 4 MB 的區塊來傳回查詢結果 (以先達到的限制為準)。 若查詢回傳超過 100 個項目,則可增加頁面大小以減少往返次數。 記憶體消耗會隨著頁面大小增加而增加。
後續步驟
想了解更多 Python SDK 的效能提示,請參閱 Azure Cosmos DB Python SDK 的效能提示。
若要深入了解如何針對規模和高效能設計您的應用程式,請參閱 Azure Cosmos DB 的資料分割與調整規模。
正在嘗試為遷移至 Azure Cosmos DB 進行容量規劃嗎? 您可以使用現有資料庫叢集的相關資訊進行容量規劃。
- 如果您知道現有資料庫叢集中的虛擬核心和伺服器數目,請參閱使用虛擬核心或 vCPU 來估計要求單位
- 如果您知道目前資料庫工作負載的一般要求率,請參閱使用 Azure Cosmos DB 容量規劃工具來估計要求單位