最后更新:2026年7月31日
云数据仓库成本优化的核心,其实就是把计算与存储解耦 之后,按秒计费的资源精准匹配到查询负载。三管齐下(Snowflake 虚拟仓库设置激进的 auto-suspend、BigQuery 采购 Editions 槽预留、Redshift 迁移到 RA3 或 Serverless),多数团队都能在不牺牲 SLA 的前提下,把年度数仓账单压缩 40%–70%。这份指南面向多账户、多区域的复杂数据平台,给出 2026 年最新版本的定价机制、告警规则、右调 SQL 与治理清单。我会把这几年在金融、SaaS、广告平台踩过的坑一并写进来,方便你少走弯路。
Snowflake 2026 年 auto-suspend 最小粒度已降至 30 秒,配合按秒计费,开发仓库月度账单能降 55% 以上。
BigQuery Editions(Standard/Enterprise/Enterprise Plus)加上槽 Autoscaler 取代了旧版 Flat-Rate,1 年承诺再省 20%,3 年承诺再省 40%。
Redshift RA3 + Managed Storage 让存储按 GB 独立计费;Serverless 模式按 RPU-小时计费,最小 8 RPU,以 8 RPU 为增量伸缩。
查询级成本归因(Query Tag、Job Labels、Query Group)是数仓 FinOps 的第一性原理,比 tag 更精细。
物化视图、结果缓存、聚簇/分区键这三大免费的降本杠杆,落地成本不高,但常被忽略。
ML 驱动的自动化推荐(Snowflake Cortex Cost Insights、BigQuery Recommender、Redshift Advisor)已经是 2026 年 FinOps 的标配。
本文目录
Snowflake、BigQuery、Redshift 2026 年定价模型对比
Snowflake 成本优化:虚拟仓库、Resource Monitor 与 Query Tag
BigQuery 成本优化:Editions、槽预留与查询分析
Redshift 成本优化:RA3、Serverless 与并发缩放
如何降低云数据仓库成本?12 条通用杠杆
BigQuery 比 Snowflake 便宜吗?三种典型工作负载测算
数仓成本监控与治理:告警、预算与自动化
常见问题
Snowflake、BigQuery、Redshift 2026 年定价模型对比
要谈优化,先得谈计费单位。三家云数仓的定价范式差异其实很大。Snowflake 按信用点(credit) 计费虚拟仓库的计算时长;BigQuery 采用按 TB 扫描 (On-demand)或按槽-小时 (Editions)双轨;Redshift 则从传统按节点小时 过渡到 RA3 + Managed Storage 与 Serverless按 RPU-小时 。理解每种模型的最小计费粒度、承诺折扣,以及存储/计算解耦程度,是选型和优化的第一步。
维度 Snowflake(2026) BigQuery(2026) Redshift(2026)
计费单位 Credit(按仓库大小 × 秒) TB 扫描量 或 Slot-小时 节点-小时 或 RPU-小时
最小计费粒度 60 秒起算,随后按秒 10 MB 起(On-demand);1 秒(Editions) 1 秒(RA3/Serverless)
Auto-Suspend 最小值 30 秒 不适用(无常驻集群) Serverless 自动挂起(1 分钟)
承诺折扣 Capacity(预付)最多 30%+ 1 年 20%、3 年 40% Reserved Node 1 年 30%、3 年 60%
存储计费 $23/TB/月(美区,压缩后) $20/TB/月(Active)$10(Long-term) $24/TB/月(Managed Storage)
ML 成本推荐 Cortex Cost Insights BigQuery Recommender Amazon Redshift Advisor
典型甜点 突发型 BI、Data App 大规模即席查询 + ML 常态化 ETL、企业数仓
说明: 价格为 2026 年 7 月 us-east-1/us-central1 公开列表价,具体折扣、企业协议、Data-Egress 加成请以官方账单为准。
三个平台在 2026 年都进一步细化了计算与存储的解耦 。Snowflake 支持从存储层单独订阅 Iceberg External Tables;BigQuery 允许把 Storage 计费独立在 project.location 级;Redshift RA3 让 SSD 缓存与 S3 Managed Storage 分离,冷数据自动下沉。这个趋势意味着 2026 年的成本优化重心,正从"节点砍半"转向"查询/仓库/存储三维分析"。多账户成本归因方案的完整做法,可以看我之前写的云成本标签与成本分摊实战指南 。
Snowflake 成本优化:虚拟仓库、Resource Monitor 与 Query Tag
Snowflake 90% 以上的账单都来自虚拟仓库(Virtual Warehouse)的运行时长 。X-Small 每小时 1 credit,而 4X-Large 每小时 128 credit,也就是说同一条 SQL 在错误的仓库上跑,成本可以差 128 倍(是的,真的是 128 倍)。这一节我会给出在多个金融和 SaaS 客户上验证过的四板斧:激进 auto-suspend、按团队拆仓、Query Tag 归因、Resource Monitor 熔断 。
1. 把 Auto-Suspend 调到 60 秒或更低
2024 年默认值仍是 600 秒;2026 年 ALTER WAREHOUSE 已经允许把 AUTO_SUSPEND 降到 30 秒。对开发/BI 仓库,我推荐 60 秒;对 Airflow 等间断触发的 ETL,推荐 30 秒。示例:
-- 把 BI 团队仓库改成积极挂起 + 弹性并发
ALTER WAREHOUSE BI_WH SET
WAREHOUSE_SIZE = 'MEDIUM'
AUTO_SUSPEND = 60 -- 秒
AUTO_RESUME = TRUE
MIN_CLUSTER_COUNT = 1
MAX_CLUSTER_COUNT = 4 -- 多集群并发
SCALING_POLICY = 'ECONOMY'; -- ECONOMY 更省,STANDARD 更快
陷阱: 短时挂起会略微增加冷启动感知;对时延敏感的Data App ,需要评估 300–600 ms 的冷启动能否接受。我上个季度就遇到过一个电商实时看板,把 auto-suspend 从 300 秒改到 30 秒之后,账单降了 40%,但 P95 冷启动多了大概 500 ms,最后折中在了 120 秒。
2. 用 Query Tag 做查询级成本归因
Tag 挂在仓库/角色上只能拿到粗粒度账单,真正的归因要靠 QUERY_TAG。做法很简单:在会话级设置团队/流水线名,然后从 ACCOUNT_USAGE.QUERY_HISTORY 聚合。
-- 在会话开头打标签(可从 dbt profiles 或 Airflow operator 注入)
ALTER SESSION SET QUERY_TAG = '{"team":"marketing","pipeline":"attribution_daily"}';
-- 按 Query Tag 聚合可归因的 credit 消耗
SELECT
PARSE_JSON(query_tag):team::string AS team,
PARSE_JSON(query_tag):pipeline::string AS pipeline,
SUM(credits_used_cloud_services + credits_used) AS total_credits
FROM snowflake.account_usage.query_history
WHERE start_time >= DATEADD(day, -30, CURRENT_TIMESTAMP())
GROUP BY 1, 2
ORDER BY 3 DESC;
3. Resource Monitor:给账单装个熔断器
2025 年年底那次"某 BI 报表死循环烧掉 $18k"事故(真事,客户找上门时账单已经在跑第二天),让我把这个作为治理红线。Resource Monitor 支持在 credit 达到阈值时挂起仓库,是最后一道防线。
CREATE OR REPLACE RESOURCE MONITOR BI_MONTHLY
WITH CREDIT_QUOTA = 500
FREQUENCY = MONTHLY
START_TIMESTAMP = IMMEDIATELY
TRIGGERS
ON 75 PERCENT DO NOTIFY
ON 90 PERCENT DO SUSPEND
ON 100 PERCENT DO SUSPEND_IMMEDIATE;
ALTER WAREHOUSE BI_WH SET RESOURCE_MONITOR = BI_MONTHLY;
4. 别忘了 Cortex Cost Insights
Snowflake 在 2026 年把 Cortex Cost Insights 从 Preview 转正,可以基于最近 90 天的查询画像自动推荐仓库尺寸和 auto-suspend。我实测在一个 40 TB 的电商仓库上给出的推荐能再省 12%,且推荐值可以一键 apply。类似的 AI 驱动自动化推荐思路,我在AI 驱动的 FinOps 指南 里有更系统的介绍。
BigQuery 成本优化:Editions、槽预留与查询分析
BigQuery 的历史包袱是"扫描 1 TB 付 $6.25"的 On-demand 模型,查询写不好可以在几分钟内烧掉几千美元(说实话,我第一次遇到这种情况的时候整个人是懵的)。2026 年主推的 Editions 模型(Standard / Enterprise / Enterprise Plus)把定价切换成槽(Slot)- 小时 :Standard $0.04/slot-hour、Enterprise $0.06、Enterprise Plus $0.10。搭配 Autoscaler 与承诺折扣,稳定负载下比 On-demand 便宜 40%–60%。
1. 什么时候切 On-demand,什么时候切 Editions
扫描量 < 10 TB/月: 继续 On-demand,享受 1 TB/月免费额度。
扫描量 10–100 TB/月且波峰明显: Enterprise Edition + Autoscaler,baseline 100 slots + max 500 slots。
扫描量 > 100 TB/月或需要 CMEK/Data Governance: Enterprise Plus + 1 年承诺,起步 500 baseline。
2. 用 Reservation 与 Autoscaler 切分工作负载
Editions 的核心是把槽划成 reservation ,不同项目/团队分不同预留,避免"批处理挤兑 BI"这种事情。示例(bq CLI):
# 创建 Enterprise Edition 容量承诺
bq mk --project_id=my-proj \
--location=us \
--capacity_commitment \
--plan=ANNUAL \
--edition=ENTERPRISE \
--slots=500
# 创建 reservation 并把 baseline/max 分给 BI 项目
bq mk --project_id=my-proj \
--location=us \
--reservation \
--slots=100 \
--autoscale_max_slots=400 \
bi_reservation
# 把 project 分配到 reservation
bq mk --project_id=my-proj \
--location=us \
--reservation_assignment \
--reservation_id=bi_reservation \
--job_type=QUERY \
--assignee_id=my-bi-project \
--assignee_type=PROJECT
3. 查询级瘦身:分区、聚簇、SELECT 列
下面这四个模式在过去一年里,帮我把某广告平台的 BigQuery 账单砍掉了 62%:
用 _PARTITIONTIME 过滤: 把 WHERE date >= '2026-07-01' 换成 WHERE _PARTITIONDATE >= '2026-07-01' 才能真正裁剪分区。
聚簇键放在 WHERE 顺位第一: 只有聚簇字段的过滤才走 block pruning。
禁用 SELECT *: BigQuery 按列计费,列越多扫描越贵。
物化视图(Materialized Views): 常见聚合走 MV 走缓存,能省 5–10 倍。
提示: 用 --dry_run 或 EXPLAIN 事前估算扫描量,把它接到 CI 里,任何 PR 引起扫描量 > 阈值都要人工审批。
4. BigQuery Recommender 的三条自动化推荐
BigQuery Recommender 在 2026 年可以给出:分区/聚簇建议 、capacity-commitment 建议 、reservation right-sizing 建议 。可以通过 gcloud recommender recommendations list 定期拉取到 Data Studio 面板做治理。我自己习惯把它跑成一个每周五的 cron 任务,Slack 通知给 FinOps 频道,问责起来简单直接。
Redshift 成本优化:RA3、Serverless 与并发缩放
Redshift 是三家里最"传统"的产品,但 2026 年也彻底转向存算解耦 。RA3 + Managed Storage 让你按 GB 单独付存储费;Serverless 按 RPU(Redshift Processing Unit)小时计费,起步 8 RPU、$0.375/RPU-小时(us-east-1)。选型逻辑主要看两个维度:负载稳定性 与治理复杂度 。
1. DC2/DS2 迁移到 RA3 的 3 步走
用 ANALYZE COMPRESSION 摸清当前存储画像,估算迁移后的 Managed Storage 费用。
使用 Elastic Resize 或 Classic Resize 迁移;RA3 的最小节点数为 2。
迁移后开启 Automatic WLM ,让 Redshift 用 ML 自动分配内存与并发。
2. Redshift Serverless:什么时候适合
Serverless 的甜点是不可预测的、间歇性的分析负载 ,比如季度盘点、事件驱动的 Lakehouse 查询。缺点是最小 8 RPU 意味着"启动一次至少烧几美元",不适合秒级碎片查询。示例 CLI:
# 创建 Serverless namespace + workgroup
aws redshift-serverless create-namespace \
--namespace-name analytics-ns \
--admin-username admin \
--admin-user-password 'REDACTED'
aws redshift-serverless create-workgroup \
--workgroup-name analytics-wg \
--namespace-name analytics-ns \
--base-capacity 32 \
--max-capacity 128 \
--config-parameters parameterKey=auto_mv,parameterValue=true
# 设置每日成本上限(Usage Limit)作为熔断器
aws redshift-serverless create-usage-limit \
--resource-arn "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/analytics-wg" \
--usage-type "serverless-compute" \
--amount 200 \
--period daily \
--breach-action deactivate
3. Reserved Node 承诺折扣的采买节奏
对稳态 Redshift Cluster 集群,Reserved Node 是最直接的降本手段:1 年 All-Upfront 约 30% 折扣,3 年 All-Upfront 约 60%。我一般用"三段式采买"的思路,先按 baseline 采 3 年,再按季度覆盖 6 个月的增量。承诺策略与 EC2 类似,可以参考之前那篇AWS Savings Plans vs Reserved Instances 对比 。
4. Concurrency Scaling 与 Data Sharing
Concurrency Scaling 每 24 小时提供 1 小时免费额度,可以吸收高并发,但要注意 concurrency_scaling 需要设为 auto。Data Sharing 让生产集群与 BI 集群通过共享 datashare 隔离负载,避免 BI 拖垮 ETL,这是我在多账户架构里必开的一项。
如何降低云数据仓库成本?12 条通用杠杆
无论用哪家数仓,下面这 12 条几乎都能立刻见效。我按落地成本从低到高排列,先做前 6 条通常就能实现 30% 以上降本。
开启结果缓存: 三家默认都有 24 小时结果缓存,避免 dbt/BI 重复执行相同 SQL。
启用查询超时: Snowflake STATEMENT_TIMEOUT_IN_SECONDS、BigQuery --maximum_bytes_billed、Redshift WLM Query Monitoring Rule。
拆分开发/生产仓库: 让开发和 CI 走 X-Small / 8 RPU,生产走单独仓库。
清理僵尸表: 90 天未查询的表下沉到冷存储或 Iceberg External Table。
合理设置分区/聚簇键: 大表必须按查询模式选择分区列,减少扫描量。
物化视图 & 汇总表: 高频聚合走 MV,尤其是 dashboard/embed 场景。
按团队/管道打标签: Query Tag / Job Labels / Query Group 三选一。
承诺折扣分层采买: baseline 3 年、增量 1 年、突发按需。
Auto-Suspend 与最小 RPU: 永远设置激进的挂起策略。
负载隔离: 用 reservation、workgroup、multi-cluster 隔离批处理与 BI。
接入成本熔断: Resource Monitor / Usage Limit / Budget Alert。
建立 FinOps Ritual: 每周成本会议 + 月度采买复盘。
BigQuery 比 Snowflake 便宜吗?三种典型工作负载测算
这个问题在 2026 年仍然是 CFO 最常问的(也是最难一句话回答的),但答案完全取决于工作负载画像。我用最近三个客户的真实数据算了三种场景,以下均为 us-east-1 / us-central1 月度公开列表价,未考虑企业折扣。
场景 数据量 Snowflake(月) BigQuery(月) Redshift(月) 最省
SaaS 分析平台,稳态 BI 5 TB 存 / 每天 200 GB 扫描 $1,850(Medium × 8h × 30 天) $1,920(Enterprise 100 slot 承诺) $1,540(RA3 2 节点 RI) Redshift
广告平台,突发 Ad-hoc 40 TB 存 / 每天 4 TB 扫描 $8,600(多集群 Large) $6,900(Standard On-demand) $9,800(RA3 4 节点 + Concurrency Scaling) BigQuery
金融 ETL,全天候批处理 120 TB 存 / 稳定 500 slot 等价 $27,400(3XL 24×7) $16,800(EE 承诺 500 slot) $22,300(RA3 8 节点 3 年 RI) BigQuery
结论: BI 稳态负载下 Redshift RA3 RI 常常最优;突发/即席场景 BigQuery On-demand 或 Standard 更甜;ETL 密集稳态 BigQuery Editions + 承诺往往赢。但只要工作负载画像一变,答案就翻转,所以别拿别人的账单当参考。跨云成本比价的方法论,建议参考 FinOps Framework 的 unit-economics 章节。
数仓成本监控与治理:告警、预算与自动化
光优化不监控,账单三个月又会反弹(我见过太多次了)。一套成熟的数仓 FinOps 治理,至少要包含四块:成本可视化 、异常告警 、预算强制 、周期性复盘 。下面是我常用的最小可行栈。
1. 成本可视化:三仓合一的数据模型
把 Snowflake ACCOUNT_USAGE.QUERY_HISTORY、BigQuery INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION、Redshift SYS_QUERY_HISTORY/SYS_SERVERLESS_USAGE 每天导入到统一的 fact_query_costs 表,字段包括 team、pipeline、warehouse、slots、bytes_scanned、cost_usd。dbt 里维护 3 个 source + 1 个 union model 即可,工作量比想象中少很多。
2. 异常告警:statistical + budget 双轨
-- 简版:日环比涨幅 > 50% 且金额 > $200 就告警
WITH daily AS (
SELECT DATE_TRUNC('day', query_ts) AS d,
team,
SUM(cost_usd) AS c
FROM fact_query_costs
WHERE query_ts >= CURRENT_DATE - INTERVAL '14 day'
GROUP BY 1, 2
),
diff AS (
SELECT d, team, c,
LAG(c) OVER (PARTITION BY team ORDER BY d) AS c_prev
FROM daily
)
SELECT *
FROM diff
WHERE c > 200
AND c > c_prev * 1.5;
3. 预算强制:三家的熔断能力
Snowflake:Resource Monitor 支持仓库级/账号级熔断。
BigQuery:--maximum_bytes_billed + Cloud Billing Budget Alert;对 Editions 用 Reservation 硬上限。
Redshift:Serverless 的 Usage Limit 可以直接 deactivate workgroup。
警告: Snowflake Resource Monitor 挂起仓库并不是即时的。在 SUSPEND_IMMEDIATE 触发前,正在运行的查询会跑完,最坏情况可能再多烧 10–15 分钟。别把它当唯一防线,业务侧的 STATEMENT_TIMEOUT 也要一起设。
4. 周期性复盘:数仓 FinOps 周会议程
我给每个客户都定了一个 45 分钟的固定议程:Top 10 昂贵查询责任人对齐 (10 min) → 承诺覆盖率 & 空闲槽复盘 (10 min) → 本周异常告警回顾 (10 min) → 未来 4 周采买/退订建议 (10 min) → Action Items (5 min)。老实说,光是把这个会开起来,多数团队三个月内的单位查询成本就能持续下降。会议纪要落到 Confluence 或 Notion,问责人一列出来,扯皮的空间就小了很多。
常见问题
Snowflake 每月大概多少钱?
Snowflake 账单 = 存储费($23/TB/月,压缩后)+ 计算 credit(Standard Edition $2.0/credit,Enterprise $3.0/credit)+ Cloud Services(超过 10% 免费额度后按 credit 计费)。以 5 TB 存储 + 每天 8 小时 Medium 仓库为例,月账单大约 $1,800–$2,000。
如何降低 BigQuery 成本?
三条最直接:切换到 Editions + Autoscaler + 1/3 年承诺可减少 20%–40%;给大表加 partition 和 clustering 减少扫描;用 --maximum_bytes_billed 或 Reservation 硬上限阻断失控查询。物化视图与结果缓存也是免费杠杆。
Snowflake 和 BigQuery 有什么定价差异?
Snowflake 按虚拟仓库的运行秒数计费,仓库尺寸决定 credit 倍数;BigQuery 有 On-demand(按 TB 扫描)与 Editions(按 slot-小时)两种模式。Snowflake 适合可预测的短时高频负载,BigQuery Editions 更适合稳态大规模负载,On-demand 更适合偶发即席查询。
Redshift Serverless 和 RA3 集群哪个更便宜?
负载稳定(>60% 利用率)时 RA3 + Reserved Node 更便宜,3 年 All-Upfront 大约 60% 折扣。负载间歇(<30% 利用率)且不能长期承诺时,Serverless 按 RPU-小时更划算,同时省去容量规划成本。转折点大约在 40%–50% 利用率。
如何监控云数据仓库的成本?
把 Snowflake ACCOUNT_USAGE、BigQuery INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION、Redshift SYS_QUERY_HISTORY 每日抽取到统一的 fact_query_costs 表,按 team/pipeline 打标签后接 Looker/Metabase 面板,并配套日环比异常告警与 Budget 熔断,形成"看得见 + 拦得住"的双层治理。