Snowflake 查询分析器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/snowflake-query-profiler。
技能介绍
解决什么问题
Snowflake 查询性能问题往往隐藏在执行计划、仓库规模和数据扫描的细节里。手动排查时,团队常面临三个典型痛点:
- 仓库规模不匹配:自动扩缩容策略下,
WH_SIZE与实际并发需求脱节,导致查询排队或资源浪费 - 扫描效率低下:未优化的表扫描会放大
BYTES_SCANNED,直接影响 credit 消耗和响应时间 - 聚簇键缺失或失效:缺乏合理的
CLUSTERING KEY,导致 pruning 效果差,查询需要扫描大量微分区
工作原理
该技能通过以下步骤完成查询画像与优化建议:
- 元数据采集:读取
SNOWFLAKE.INFORMATION_SCHEMA中的TABLES、COLUMNS和TABLE_STORAGE_METRICS,获取表结构、行数、存储大小等基础信息 - 历史分析:查询
SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY,提取QUERY_TEXT、EXECUTION_TIME、BYTES_SCANNED、TOTAL_ELAPSED_TIME等字段 - 瓶颈识别:
- 对比 MEDIAN_EXECUTION_TIME 和 P95_EXECUTION_TIME,定位长尾查询
- 计算 BYTES_SCANNED / ROWS_RETURNED,识别全表扫描问题
- 检查 WAREHOUSE_SIZE 与 AVERAGE_CONCURRENCY 的匹配度
- 优化建议生成:
- 根据 TABLE_STORAGE_METRICS.PARTITION_COUNT 和查询频率,推荐 CLUSTERING KEY 候选列
- 结合 CREDITS_USED 趋势,提示是否调整仓库自动扩缩容的 MIN_CLUSTER_SIZE 和 MAX_CLUSTER_SIZE
- 对高成本查询,建议添加 WHERE 条件或物化视图
适用边界
- 分析结果依赖
QUERY_HISTORY的数据保留周期,默认最长 400 天 - 聚簇键建议基于统计信息,实际效果需结合写入模式和查询模式验证
- 仓库规模优化建议假设使用标准自动扩缩容策略,对于固定集群需手动调整
- 无法替代 Snowflake 原生的
EXPLAIN或QUERY_TRACE,适合作为初步诊断和优化方向参考
该技能适合数据工程师和分析师在优化 Snowflake 查询性能、控制成本时使用,帮助快速定位仓库配置、扫描效率和聚簇策略的问题。
使用场景
- 当 Snowflake 仓库执行复杂 SQL 经常排队时,需要判断是仓库规格不足还是表扫描过大
- 分析月度 Snowflake 账单时,需要找出扫描字节远高于返回行数的低效查询
- 表数据增长后报表查询变慢,需要根据分区和查询模式推荐聚簇键
- 季度成本复盘时,需要按 credits 消耗排序定位高成本查询并给优化方向
适合人员
- 数据工程师,需要持续优化 Snowflake 仓库规格和扫描成本
- SQL 分析师,在编写复杂查询时希望获得聚簇键建议以改善 pruning
- 数据库管理员,每月审查查询历史时需要定位高扫描量查询
- 成本优化负责人,需要按 credits 消耗识别并优化高成本查询