[英]How do I get list of Physical Partition in Azure CosmosDb, is there a way to get list of physical partitions?
[英]Azure CosmosDB how to query against a physical partition
我正在嘗試執行一個非常大的查詢,該查詢需要返回數百萬條記錄,因此我想對查詢進行分區並使用多台計算機來處理結果。
我的邏輯分區鍵將是文檔的UUID,因此對我將不同的部分分配給每個工作程序節點不會有太大幫助。 我可以獲取物理分區ID並僅在特定物理分區內執行查詢嗎?
這是我嘗試過的:
FeedOptions feedOptions = new FeedOptions();
feedOptions.setEnableCrossPartitionQuery(false);
feedOptions.setPartitionKeyRangeIdInternal("0");
client.queryDocuments(collectionPath, "SELECT * FROM e where e.docType
= 'address'", feedOptions).flatMapIterable(FeedResponse::getResults);
但是更改partitionKeyRangeId似乎根本不會更改結果。
請指教。
據我所知,到目前為止,它不能在特定的物理分區內執行。 我在Cosmos DB Rest Api中找不到與物理分區有關的任何參數。 您在代碼中提到的PartitionKeyRangeId用於更改供稿請求。
根據官方文檔中的聲明,我們無法管理cosmos db中的物理分區:
Azure Cosmos DB將根據您的工作量自動擴展物理分區的數量。 因此,您不應基於物理分區的數量來核心化數據庫設計,而應確保選擇確定邏輯分區的正確分區鍵。
但是,由於cosmos db具有靈活性,可用性和啟發性,因此如果您確實有與物理分區相關的要求,則可以提交反饋以尋求進一步的幫助。
希望對您有幫助。
更新答案:
有很多方法可以提高處理大量數據的性能,在這里我只提供一些個人建議。
1.您可以嘗試考慮選擇比UUID
更合適的分區鍵,以大大提高性能。
2.嘗試使用page size
限制每個查詢的項目數,然后通過多線程實現查詢和進程並行性。
3.增加RUs設置以提高性能。
更多想法,請參考此文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.