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

如何获取Cosmos DB集合中每个分区的大小?

获取Cosmos DB集合所有分区大小的方法

当然可以获取Cosmos DB集合中所有分区的大小!Azure门户的Metrics面板只展示前几个大分区确实有点局限,下面我给你几种可靠的方法来拿到全部分区的存储数据:

方法1:使用Azure CLI

这是最快捷的命令行方式,直接调用Cosmos DB的管理接口就能拿到所有分区的统计信息。打开终端执行以下命令(替换掉尖括号里的参数):

az cosmosdb sql container show-partition-key-stats --account-name <你的Cosmos DB账户名> --resource-group <资源组名> --database-name <数据库名> --name <集合名>

返回的结果里会包含每个分区键对应的sizeKb(单位KB),清晰列出所有分区的大小。

方法2:使用PowerShell

如果你习惯用PowerShell管理Azure资源,这个命令同样能满足需求:

Get-AzCosmosDBSqlContainerPartitionKeyStatistics -ResourceGroupName <资源组名> -AccountName <账户名> -DatabaseName <数据库名> -ContainerName <集合名>

执行后会输出每个分区的详细统计,包括分区键值、存储大小等关键数据。

方法3:通过Cosmos DB SDK编程获取

如果需要在应用中集成分区大小的查询逻辑,用官方SDK是最佳选择。这里以.NET SDK为例,给你一段简单的代码示例:

using Microsoft.Azure.Cosmos;

var cosmosClient = new CosmosClient("<你的连接字符串>");
var container = cosmosClient.GetContainer("<数据库名>", "<集合名>");

var partitionKeyStats = await container.GetPartitionKeyStatisticsAsync();
foreach (var stat in partitionKeyStats)
{
    Console.WriteLine($"分区键: {stat.PartitionKey}, 存储大小: {stat.SizeInKB} KB");
}

Python、Java等其他语言的SDK也提供了类似的getPartitionKeyStatistics接口,逻辑基本一致,你可以根据自己的技术栈调整。

方法4:使用Azure Monitor日志查询

如果你的Cosmos DB已经配置了日志收集到Log Analytics,还可以通过Kusto查询来获取分区大小,甚至能查看历史变化趋势:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyStatistics"
| where databaseName_s == "<数据库名>" and collectionName_s == "<集合名>"
| project partitionKey_s, sizeKb_d, timestamp
| order by timestamp desc

这个方法适合需要长期监控分区大小变化的场景。

内容的提问来源于stack exchange,提问作者Randy Minder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:28:07