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

ADLS Gen2容器大小计算性能优化,求等效Get-AzDataLakeStoreChildItemSummary命令

问题解答

1. ADLS Gen2是否有等效于Get-AzDataLakeStoreChildItemSummary的命令?

目前Az.Storage模块中没有直接等效于ADLS Gen1的Get-AzDataLakeStoreChildItemSummary的PowerShell命令。该命令是ADLS Gen1专属的批量统计接口,而ADLS Gen2基于Blob存储架构,原生未提供类似的一次性统计目录/文件数量、总大小的便捷命令,需通过其他方式实现高效统计。

2. 提升ADLS Gen2容器大小计算性能的优化方案

现有脚本的性能瓶颈在于递归遍历所有文件并在本地汇总数据,当文件/目录数量极大时(如你场景中的17万+文件、16万+目录),会产生大量API请求且本地处理耗时久。以下是针对性优化方案:

优化方向

  • 采用批量处理减少API请求次数
  • 避免本地存储全量文件对象,边遍历边累加统计数据
  • 只加载必要属性,减少不必要的数据传输

优化后的脚本

$StorageAccountName = "xxxxxx"
$ContainerName = "xxxxxx"

$actContext = New-AzStorageContext -StorageAccountName $StorageAccountName

# 初始化统计变量
$totalFileCount = 0
$totalDirCount = 0
$totalSizeBytes = 0
$token = $null

do {
    # 批量获取条目,仅加载所需属性
    $items = Get-AzDataLakeGen2ChildItem -Context $actContext -FileSystem $ContainerName `
        -Recurse -ContinuationToken $token -FetchProperty @("IsDirectory", "Length")
    
    if (-not $items) { break }

    # 统计当前批次的文件、目录数及大小
    $batchFileCount = ($items | Where-Object { -not $_.IsDirectory }).Count
    $batchDirCount = ($items | Where-Object { $_.IsDirectory }).Count
    $batchSizeSum = ($items | Where-Object { -not $_.IsDirectory } | Measure-Object -Property Length -Sum).Sum

    # 累加到总统计值
    $totalFileCount += $batchFileCount
    $totalDirCount += $batchDirCount
    $totalSizeBytes += $batchSizeSum

    # 更新续传令牌
    $token = $items[$items.Count - 1].ContinuationToken
} while ($token)

# 格式化输出结果
[pscustomobject]@{
    "storageAccountName"   = $StorageAccountName
    "containerName"        = $ContainerName
    "directoryCount"       = $totalDirCount
    "fileCount"            = $totalFileCount
    "containersizeinBYTES" = $totalSizeBytes
    "adlsSizeinGB"         = [math]::Round($totalSizeBytes / 1GB, 6)
    "adlsSizeinTB"         = [math]::Round($totalSizeBytes / 1TB, 6)
}

额外优化建议

  • 使用Storage Analytics指标:若不需要精确的文件/目录数量,可启用Storage Analytics的Blob容量指标,直接获取容器总大小,无需遍历文件。
  • 升级Az.Storage模块:确保使用最新版本的Az.Storage模块,微软会持续优化API调用性能。
  • 分片并行统计:对于超大规模容器,可按目录路径分片,并行执行统计逻辑,进一步压缩耗时。

内容的提问来源于stack exchange,提问作者Brahmaiah Takkellapati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:05:38