- 类别:
系统函数 (系统信息)
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS¶
返回与为表启用 自动聚类 相关的估算成本。此函数用于执行以下操作:
估算首次对表进行聚类的成本。
估算更改表的聚类密钥的成本。
在可能的情况下,估算围绕指定密钥聚类后维护表的相关成本。有时,一个表可能需要更多 DML 历史记录来估算未来的维护成本。
重要
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 函数返回的成本估算值为尽可能准确的估算值。实际发生的成本可能与估计成本相差高达 100%(在极少数情况下可相差数倍)。
语法¶
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS( '<table_name>' ,
[ '( <expr1> [ , <expr2> ... ] )' ] )
实参¶
- '
table_name
' 要返回其估算聚类成本的表的名称。
- '
(expr1 [ , expr2 ... ])
' 为表建议的聚类密钥是每个表达式解析为表列的位置。该函数使用这些列作为聚类密钥来估算对表进行聚类的成本。
即使只传递一个列名或表达式,也必须包含在括号内。
对于没有群集密钥的表,必须使用此实参。如果省略此实参,将返回错误。
对于具有群集密钥的表,此实参为可选项。 如果省略该实参,该函数将使用表的当前群集密钥来估算对表进行聚类的成本。
返回¶
VARCHAR 类型的值。返回的字符串采用 JSON 格式,并包含以下名称/值对:
warning
指示条件是否会影响成本估算准确性或选择聚类密钥的影响。
reportTime
生成函数输出的日期。
clusteringKey
组成聚类密钥的列。
initial
描述围绕指定群集密钥对表进行聚类的预测成本。不包括在对表进行聚类后维护表的估算成本。
initial
JSON 对象包含以下名称/值对。unit
指示用于表示初始成本的单位。
value
指示对表进行聚类的成本,以
unit
表示。comment
解释聚类的初始成本。
maintenance
描述在初始聚类后,维护聚类良好的表所需的预测成本。这一预测基于最近的 DML 活动,因为表在更改时会重聚类。
空对象表示 Snowflake 无法提供维护成本估算。在大多数情况下,Snowflake 无法提供维护估算,因为表没有足够的可用 DML 历史记录,或者过去一周没有足够支持的 DML 类型来准确预测成本。
unit
指示用于表示成本的单位。
value
指示在初始聚类后维护表的成本,以每天
units
表示。comment
包括成本产生期间和估算所基于的时间范围。
访问控制要求¶
估算成本所需的权限与读取表和更改聚类密钥所需的权限相同。您需要以下权限:
对表的 SELECT 和 INSERT 权限,或对表的 OWNERSHIP 权限。
对父架构和数据库的 USAGE 或 OWNERSHIP 权限。
使用说明¶
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 函数返回的成本估算是基于对表的微分区子集进行采样并获取聚类执行时间得出的。根据采样的特定微分区和系统速度,函数执行之间的成本估算可能会有所不同。
为了获得最佳准确度,您可以多次运行 SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS,然后求取结果的平均值。该函数使用示例聚类作业并收集其执行时间。提供的成本估算可能会根据系统速度而波动。多次运行该函数并求取平均值,可以得出更准确的成本估算。
维护成本估算不准确的最常见原因是基于估算的 DML 模式与未来的 DML 模式不匹配。
Snowflake 能够在绝大多数情况下提供一次性成本估算,在某些情况下提供维护成本估算。如果函数无法提供维护成本估算,Snowflake 会在输出中包含原因。
示例¶
返回与将列 day
和 tenantId
定义为表 myTable
的聚类密钥相关的估算成本。
SELECT SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS('myTable', '(day, tenantId)');
{
"reportTime": "Fri, 12 Jul 2024 01:06:18 GMT",
"clusteringKey": "LINEAR(day, tenantId)",
"initial": {
"unit": "Credits",
"value": 98.2,
"comment": "Total upper bound of one-time cost"
},
"maintenance": {
"unit": "Credits",
"value": 10.0,
"comment": "Daily maintenance cost estimate provided based on DML history from the
past seven days."
}
}