有人使用过 Snowflake 搜索优化并获得了优于集群键的好处吗?

问题描述 投票:0回答:2

参考:

https://docs.snowflake.com/en/user-guide/search-optimization-service.html#what-access-control-privileges-are-needed-for-the-search-optimization-service

有人使用过 Snowflake 搜索优化并获得了优于集群键的好处吗? 请分享任何用例、成本与性能。

欣赏见解

optimization search key snowflake-cloud-data-platform cluster-analysis
2个回答
1
投票

一般来说,对于点查找查询,搜索优化服务 (SOS) 比集群更有利,点查找查询是使用等式或 IN 过滤条件从非常大的表中检索 1 行或几行的查询类型。

由于表中只能有一个聚簇键,因此 SOS 还可以帮助优化聚簇表中非聚簇键列的搜索。

但是与集群不同,SOS 增加了存储成本,该成本保存启用了 SOS 的每个表的搜索访问路径数据


0
投票

雪花搜索优化旨在找到“大海捞针”,而数据聚类旨在减少返回的数据,而不是找到极少量的行。

我(至少)有两个搜索优化服务和集群发挥作用的用例。

我有一个 1.3 TB 的表,包含数十亿行,80% 的查询获取当月的数据,50% 的查询在本周获取。剩下的 20% 中,大多数获取了一个月左右的数据,但最多是 15 年前。

集群键使数据按交易日期进行物理排序,并且在 90% 的情况下,查询在几秒钟内运行。然而,集群只能很好地发挥作用,因为大多数查询都包含一个过滤器,例如:

where TRANSACTION_DATE between :START and :END;

典型的查询返回数十亿行中的数千甚至数十万行。

另一个表(同样是 TB 大小)使用针对键组合的 EQUALITY 搜索进行查询。与之前的用例不同,分析师在整个历史记录中搜索行(所有 20 年的数十亿行),典型的 WHERE 子句如下所示:

where AGE_GROUP = ‘GEN-Z’
and   INCOME_BRACKET = :INCOME 
and   REGION = :REGION 
and   GENDER = ‘MALE’
and   M_STATUS in (‘MARRIED’, ‘COHABITING’)

要点是:

  • 平等条款不介于或大于
  • 全表查询
  • 获取相对于微分区数量的少量行。

用例 1(集群)可以返回 100,000 行,但由于数据都是按 DATE 查询和(更重要的是)存储的,因此大多数查询会获取大约 10 个微分区。所有这些都“聚集在一起”。

用例 2 搜索优化服务,通常返回 < 1,000 rows (from 70,000 micro partitions), but these were from across the entire table history.

查询越有选择性,响应越快。

我写了一篇关于我的经验的博客文章:https://www.analytics.today/blog/snowflake-search-optimization-service-best-practices

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.