You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Azure Cosmos DB各分区使用大小?REST API及Java SDK v4问题咨询

Azure Cosmos DB分区使用大小获取问题解决方案

问题1:REST API调用报错解决

报错原因:Cosmos DB REST API强制要求所有请求必须携带x-ms-version请求头指定API版本,你提交的请求缺少该头导致校验失败。同时你原请求路径中{collection}前有多余空格,也会导致请求异常。
修复步骤:

  • 补充x-ms-version头,当前常用的稳定API版本为2021-06-15
  • 若需要接口返回分区使用统计数据,需额外携带x-ms-documentdb-populatepartitionstatistics: true请求头
  • 删除路径中的多余空格

修正后的完整curl命令:

curl -X GET -L \
-H "Content-Type: application/json" \
-H "Authorization: Bearer xxxx" \
-H "x-ms-version: 2021-06-15" \
-H "x-ms-documentdb-populatepartitionstatistics: true" \
https://{account}.documents.azure.com/dbs/{db}/colls/{collection}

请求返回结果中partitionKeyStatistics字段即为各分区的使用统计数据。

问题2:Java Cosmos SDK v4获取分区大小实现

v4版本已重构v2版本的分区统计相关接口,原PartitionKeyStatistics类的功能已整合到com.azure.cosmos.models.PartitionKeyRangeStatistics类中,可通过CosmosContainer的内置方法直接获取,示例代码如下:

import com.azure.cosmos.CosmosContainer;
import com.azure.cosmos.models.PartitionKeyRangeStatistics;
import java.util.List;

// 初始化CosmosClient、获取数据库实例的逻辑省略
CosmosContainer targetContainer = cosmosClient.getDatabase("替换为你的数据库名")
        .getContainer("替换为你的容器名");

// 获取全部分区的统计信息
List<PartitionKeyRangeStatistics> partitionStats = targetContainer
        .readAllPartitionKeyRangeStatistics()
        .getResults();

// 遍历打印各分区数据
for (PartitionKeyRangeStatistics stat : partitionStats) {
    // 分区唯一ID
    String rangeId = stat.getPartitionKeyRangeId();
    // 分区已使用存储大小,单位为KB
    long usedStorageKB = stat.getStorageSizeInKB();
    System.out.printf("分区ID:%s,已使用存储:%d KB\n", rangeId, usedStorageKB);
}

注意:上述两种方式获取的分区统计数据都存在最多15分钟的延迟,仅适用于非实时的存储统计场景。

内容的提问来源于stack exchange,提问作者TA Hyouno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:24:04