估计表大小
适用于:✅Azure 数据资源管理器
了解表的大小有助于有效管理资源和优化查询性能。 在本文中,你将了解不同的方法估计表大小以及如何有效地使用它们。
引入数据的原始大小
使用 .show table details 来估计表的原始数据大小。 有关示例,请参阅使用 .show table details。
此命令基于数据以 CSV 格式进行传输这一假设,估计引入到表中的数据的解压缩大小。 通过考虑数值的字符串表示形式,估计基于数值(例如整数、长整型、日期/时间和 guid)的近似长度。
示例用例:跟踪一段时间内传入数据的大小,做出有关容量规划的明智决策。
以访问字节表示的表大小
使用 estimate_data_size() 和 sum() 聚合函数,基于数据类型及其各自的字节大小估计表大小。 有关示例,请参阅使用 estimate_data_size()。
此方法考虑数值的字节大小而不将其格式化为字符串,从而提供更精确的估计。 例如,整数值需要 4 个字节,而长整型和日期/时间值需要 8 个字节。 使用此方法可以准确地估计适合内存的数据大小。
示例用例:根据要扫描的字节确定查询成本。
多个表的合并大小
可以使用 union 运算符以及 estimate_data_size() 和 sum() 函数,根据访问字节估计多个表的合并大小。 有关示例,请参阅将 union 与 estimate_data_size() 配合使用。
示例用例:评估将多个表中的数据合并到单个数据集中的内存要求。
注意
此方法可能会因空列而增加估计的数据大小,因为 union
会合并指定表中的所有列,而 estimate_data_size()
会在计算数据大小时考虑空列。
示例
使用 .show table details
以下查询估计 StormEvents
表的原始数据大小。
.show table StormEvents details
| project TotalOriginalSize
输出
TotalOriginalSize |
---|
60192011 |
提示
若要将字节结果格式化为 MB
、GB
或其他单位,请使用 format_bytes()。
使用 estimate_data_size()
以下查询估计 StormEvents
表的原始数据大小(以字节为单位)。
::: moniker-end
StormEvents
| extend sizeEstimateOfColumn = estimate_data_size(*)
| summarize totalSize=sum(sizeEstimateOfColumn)
输出
totalSize |
---|
58608932 |
注意
即使针对同一张表完成计算,输出也较小。 这是因为此方法考虑数值的字节大小而不将其格式化为字符串,从而提供了更精确的估计。
将 union 与 estimate_data_size() 配合使用
以下查询基于 Samples
数据库中的所有表估计数据大小。
union withsource=_TableName *
| extend sizeEstimateOfColumn = estimate_data_size(*)
| summarize totalSize=sum(sizeEstimateOfColumn)
| extend sizeGB = format_bytes(totalSize,2,"GB")
totalSize | sizeGB |
---|---|
1761782453926 | 1640.79 GB |