译者 | 李睿
审校 | 重楼
在大数据时代,高效的数据管理和查询性能对于希望从数据投资中获得最佳运营性能的企业来说至关重要。Snowflake是一个基于云的数据平台,它为企业提供了一种高效处理大数据表的方式,并降低了数据环境的复杂性,因此受到了广泛的欢迎。大数据表的特点是其巨大的规模、不断增加的数据集,以及管理和分析大量信息带来的挑战。
随着数据以各种格式从各种来源大量涌入,确保数据的可靠性和质量越来越具有挑战。从这些多样化和动态的数据中提取有价值的见解需要可扩展的基础设施、强大的分析工具以及对安全和隐私的高度关注。尽管存在复杂性,但大数据表为明智的决策和创新提供了巨大的潜力,因此企业必须了解和处理这些数据存储库的独特特征,以有效地利用其全部功能。
为了实现最佳性能,Snowflake利用了几个基本概念,这些概念有助于高效地处理大数据。一种是数据修剪,它通过在查询执行期间消除不相关的数据起着至关重要的作用,通过减少扫描的数据量来加快响应时间。与此同时,Snowflake的微分区(通常大小为16 MB的不可变的小段)允许跨节点的无缝可扩展性和高效分布。
微分区是Snowflake的一个重要功能。这种创新的技术结合了静态分区的优点,同时避免了其局限性,从而带来了额外的显著好处。Snowflake架构的美妙之处在于其可扩展的多集群虚拟仓库技术,该技术可自动维护微分区。这一过程确保在后台高效和自动地执行重新集群,从而消除了人工创建、调整大小或调整虚拟仓库大小的需要。计算服务主动监视所有注册的集群表的集群质量,并系统地在集群最少的微分区上执行集群,直到达到最佳集群深度。这种无缝流程优化了数据存储和检索,提高了整体性能和用户体验。
该设计提高了数据存储和处理效率,进一步提高了查询性能。此外,Snowflake的集群特性允许用户定义集群键,根据相似性在微分区内安排数据。通过为集群键配置具有相似值的数据,Snowflake减少了查询期间的数据扫描,从而优化了性能。总之,这些关键概念使Snowflake能够在管理大数据工作负载方面具有无与伦比的效率和性能。
不适当的大数据表的布局可能导致长时间运行的查询,由于更高的数据扫描而增加的成本,以及降低的整体性能。应对这一挑战,充分利用Snowflake的能力,最大限度地发挥其潜力是至关重要的。大数据表管理中的一个主要挑战是数据摄取团队缺乏对消耗工作负载的认识,从而导致各种问题,对系统性能和成本效益产生负面影响。长时间运行的查询是一个严重的后果,会导致交付关键见解的延迟,特别是在实时数据分析对决策至关重要的时间敏感应用程序中。此外,由于低效的表布局会消耗更多的计算资源和存储,导致运营成本的增加,随着时间的推移会使企业的预算紧张。
图1 频繁访问的大数据表的列表
优化Snowflake性能的第一步是彻底分析消费工作负载。Acceldata的数据可观察性云计算(ADOC)平台分析这些历史工作负载,并在大小、访问、分区和集群级别提供表级洞察。
图2 访问频率最高的表的统计信息
了解最常执行的查询和应用的过滤模式可以提供有价值的见解。重点关注大型且经常访问的表,因为它们对整体性能的影响最大。
图3 表中大多数被过滤的列
ADOC的高级查询解析技术能够检测通过WHERE或JOIN子句访问的列。利用可视化和分析工具来确定访问和过滤最频繁的列。
图4 列+表的微分区和集群视图
ADOC还通过Snowflake表系统函数获取CLUSTERING_INFORMATION,并以简单易懂的可视化方式显示表集群元数据。这些信息可以指导优化表格布局的决策过程。
图5 Snowflake可视化表集群浏览器
了解过滤列的重叠程度和深度。这些信息对于在定义集群键时做出明智的决策至关重要。
最终目标是将集群键与最常用的过滤列相匹配。这种对齐确保了相关数据聚集在一起,减少了数据扫描并提高了查询性能。
Snowflake在管理大数据表方面的能力是无与伦比的,但要充分利用它的优势,通过数据修剪和集群来优化性能是必不可少的。数据摄取团队和使用数据的团队之间的协作对于确保表的最佳布局至关重要。通过了解消费工作负载并将集群键与过滤列匹配,企业可以实现高效查询,降低成本,并充分利用Snowflake在高效处理大数据方面的能力。
原文标题:Snowflake Workload Optimization,作者:Ashwin Rajeeva