搜索优化成本估算和管理¶
搜索优化服务会影响存储和计算资源的成本:
存储资源:搜索优化服务创建搜索访问路径数据结构,该结构需要为启用搜索优化的每个表留出空间。搜索访问路径的存储成本取决于多个因素,包括:
表中非重复值的数量。在极端情况下,如果所有列的数据类型都使用搜索访问路径,且每列中的所有数据值都是唯一的,那么所需的存储空间可能与原始表的大小相当。
但通常情况下,所需的存储空间约为原始表大小的 1/4。
计算资源:
向表中添加搜索优化功能会在初始构建阶段消耗资源。
维护搜索优化服务也需要资源。当流失率高时(即表中的大量数据发生变化时),资源消耗会更高。这些成本大致与引入(添加或更改)的数据量成正比。删除也会产生一些成本。
Automatic clustering, while improving the latency of queries in tables with search optimization, can further increase the maintenance costs of search optimization. If a table has a high churn rate, enabling automatic clustering and configuring search optimization for the table can result in higher maintenance costs than if the table is just configured for search optimization.
Snowflake 仅根据实际使用的资源向您的账户计费,从而确保有效使用 Credit。计费以 1 秒为增量计算。
请参阅 Snowflake 服务使用表 中的“无服务器功能 credit 表”,了解每计算小时的成本。
启用搜索优化服务后,您可以 查看使用该服务的成本。
小技巧
Snowflake 建议慢慢开始使用此功能(即首先仅将搜索优化添加到几个表),并密切监视成本和收益。
估算搜索优化的成本¶
估算为表添加搜索优化和为搜索优化配置特定列的成本,请使用 SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS 函数。
一般来说,成本与以下因素成正比:
启用该功能的列数以及这些列中非重复值的数量。
这些表中发生变化的数据量。
重要
SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS 函数返回的成本估算为尽力估算值。实际发生的成本可能与估计成本相差高达 50%(在极少数情况下可相差数倍)。
构建和存储成本估算基于对表中记录的子集进行采样得出
维护成本估算基于表中最近的创建、删除和更新活动得出
查看搜索优化的成本¶
您可以使用 Web 界面或 SQL 查看搜索优化服务的实际计费成本。请参阅 了解计算成本。
降低搜索优化成本¶
您可以仔细 选择要启用搜索优化的表和列,来控制搜索优化服务的成本。
此外,要降低搜索优化服务的成本,还可以采取以下措施:
Snowflake 建议对表执行批处理 DML 操作:
DELETE
:如果表存储最近一段时间(例如最近一天、一周或一个月)的数据,那么当您通过删除旧数据来修剪表时,搜索优化服务必须考虑更新。在某些情况下,可以通过减少删除频率(例如每天删除而不是每小时消除)来降低成本。INSERT
、UPDATE
和MERGE
:在表批处理这些类型的 DML 语句可以降低搜索优化服务的维护成本。
如果重聚类整个表,可考虑在重聚类之前 弃用表的 SEARCH OPTIMIZATION 属性,然后在重聚类后 将 SEARCH OPTIMIZATION 属性添加回表。
在为子字符串搜索 (
ON SUBSTRING(col)
) 或 VARIANTs (ON EQUALITY(variant_col)
) 启用搜索优化之前,请调用 SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS 以估算成本。这些搜索方法的初始构建和维护可能需要大量计算,因此应评估性能和成本之间的权衡。