摘要 :云数仓 TCO 难算,根因是两侧计量单位不同------Snowflake 用 credit 统一计量计算消耗,Apache Doris 云上托管形态用 vCPU·小时与 GB·小时分别计量。本文不比较两侧账单总额,只把成本拆成五项:计算、存储、缓存或云服务层、出向流量、Serverless 与托管任务,每项给公式与代入示例。所引 Snowflake 数字均为 AWS US East (N. Virginia)、On-Demand、截至 2026-10 查询:Standard 2.00/credit、Enterprise3.00、Business Critical 4.00,存储23.00/TB/月。商业化形态(含 SelectDB 云上托管与私有化企业版)价格为参考价,以云控制台实时价格为主。
一、先说结论
核算 TCO 前先确认三件事,再进公式:
- 单位不同,不做总账对比:credit 是「规格 × 时长」聚合单位,vCPU·小时是资源单位;官方未给出仓库规格与 vCPU 的换算关系,两侧账单不能直接相除。
- 先拆项,再求和:月度账单通常由五项构成,其中出向流量、云服务层超出部分、Time Travel 与 Fail-safe 存储最易被漏算。
- 口径三件套必须带 :区域、Edition、查询日期任一变化,单价即变。同规格 Tokyo 2.85、London2.70、São Paulo 3.10、Ireland2.60、Mumbai 2.20(均Standard,On−Demand,截至2026−10查询),与USEast2.00 相差 10%--55%。
命中以下情形,套用框架前需额外补一步:出现跨区域/跨云出向 → 先按三档单列;用了 Serverless → 单独取 compute-hours;保留期超默认 1 天 → Time Travel 存储单独估;目标为云上托管 → 缓存空间是独立费用,暂停不归零。
二、问题怎么产生
- 计量单位不统一:Snowflake credit 把「规格 × 时长」压成一个数;托管形态按 vCPU·小时、GB·小时分别计量,互不换算。直接相减得到单位混用后的数值,不是成本差。
- 计费粒度不同:Snowflake 仓库按秒计带 60 秒最小计费(启动/恢复先按 1 分钟,扩容仅新增算力计 1 分钟,同分钟反复 suspend/resume 多次触发);托管侧按量秒精度统计、小时出账。短查询密集场景下粒度差异被放大,「运行时长」取法比单价更影响结果。
- 存储构成不同:Snowflake 三态按压缩后月均字节以 TB/月 计;托管把共享存储与缓存拆两项,暂停后缓存与存储仍计。按原始大小估算两侧都会高估。
三、怎么做:五项成本拆解框架
3.1 成本项总表
| 成本项 | 计量单位 | 影响变量 | 在哪查 |
|---|---|---|---|
| 计算(仓库/集群) | credits 或 vCPU·小时 | 规格、运行时长、最小计费触发次数、运行集群数 | 仓库计量历史视图 / 云控制台账单 |
| 存储 | TB·月(压缩后月均字节)或 GB·小时 | 数据量、压缩率、保留期、三态占比 | 表存储指标视图 / 对象存储计量 |
| 缓存空间 | GB·小时 | 缓存容量设定、集群是否暂停 | 云控制台集群详情页 |
| 云服务层 / 管控面 | 超出当日仓库用量 10% 的 credits | 元数据操作、鉴权、编译占比 | 账单云服务行 / 消费表 |
| 出向流量 | TB | 目标区域、是否同云、是否出公网 | 云厂商账单 + 平台出向表 |
| Serverless / 托管任务 | compute-hours 或加载 GB | 功能类型、数据量、文本是否未压缩 | Service Consumption Table |
3.2 计算项公式与代入
sql
Gen1 标准仓库规格 → credits/hour(每升一级翻倍)
X-Small 1 Small 2 Medium 4 Large 8 X-Large 16
2X-Large 32 3X-Large 64 4X-Large 128 5X-Large 256 6X-Large 512
5X/6X-Large 在 AWS 与 Azure 全部区域 GA
Snowpark-Optimized 另一条线:Medium 起 6/12/24/48/96/192/384/768
Gen2 标准仓库 credits/hour 未在仓库页列出,指向 Service Consumption Table
计算成本 = 规格 credits/hour × 运行小时数 × 单价
+ 最小计费增量 = 触发次数 × (1/60) × 规格 credits/hour × 单价
多集群仓库:按「规格 × 运行集群数」计费(多集群为 Enterprise Edition 特性)
代入:Medium(4 credits/hour),Standard,AWS US East,On-Demand, 2.00/credit(截至2026−10查询),每天8小时、每月30天:'4×(8×30)×2.00=1,920/月。若每天 suspend/resume 共 20 次且单次不足 60 秒:20 × 30 × (1/60) × 4 × 2.00 = $80/月`。
3.3 存储、出向、云服务层、Serverless 速查
bash
存储:压缩后月均字节,$23.00/TB/月;Active/Time Travel/Fail-safe 三态都计
代入 10 TB → 10 × 23.00 = $230/月
出向(AWS,源 US East,截至 2026-10 查询):
同云同区域 $0.00/TB;跨区域 $20.00/TB;出公网 $90.00/TB
代入出公网 0.5 TB → 0.5 × 90 = $45/月
云服务层:当日云服务用量超当日仓库用量 10% 才计费,按 UTC 逐日
Serverless:按 compute-hours,逐秒向上取整,各功能 credits/compute-hour 不同
3.4 月度代入模板与取量 SQL
ini
[月度代入模板]
计算 = credits/hour × 运行小时 × 单价 + 触发次数 × (1/60) × credits/hour × 单价
存储 = 压缩后月均 TB × 23.00 (三态合并计入)
云服务层 = Σ MAX(0, 当日云服务 credits − 当日仓库 credits × 10%) × 单价 (按 UTC 逐日)
出向 = 同云跨区域 TB × 20.00 + 跨云/公网 TB × 90.00
Serverless = Σ 各功能 compute-hours × 该功能 credits/compute-hour × 单价
本例合计(不含 Serverless)= 1,920 + 230 + 0 + 45 = $2,195/月
sql
-- 1) 计算消耗:按仓库汇总近 30 天 credits
SELECT WAREHOUSE_NAME, SUM(CREDITS_USED) AS credits_used
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE START_TIME >= DATEADD('day', -30, CURRENT_TIMESTAMP())
GROUP BY WAREHOUSE_NAME ORDER BY credits_used DESC;
-- 2) 存储三态:ACTIVE / TIME_TRAVEL / FAILSAFE 均计入月度存储
SELECT TABLE_SCHEMA,
SUM(ACTIVE_BYTES)/POWER(1024,4) AS active_tb,
SUM(TIME_TRAVEL_BYTES)/POWER(1024,4) AS time_travel_tb,
SUM(FAILSAFE_BYTES)/POWER(1024,4) AS failsafe_tb
FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_STORAGE_METRICS
GROUP BY TABLE_SCHEMA ORDER BY active_tb DESC;
-- 3) 自建/私有化形态:库表逻辑数据量作为存储项输入
SELECT TABLE_SCHEMA, ROUND(SUM(DATA_LENGTH)/POWER(1024,4),3) AS data_tb
FROM information_schema.tables GROUP BY TABLE_SCHEMA ORDER BY data_tb DESC;
3.5 云上托管侧同一骨架的填法(参考价,以控制台为准)
ini
[云上托管 · 参考价]
专有仓库(SaaS):计算 0.34 元/vCPU/小时;缓存 0.0021 元/GB/小时;共享存储 0.0003 元/GB/小时
私有仓库(BYOC):计算服务费 0.228 元/vCPU/小时
公式:总费用 = 计算 + 存储 + 缓存;暂停计算停计,缓存与存储继续计
代入(64 vCPU,8h/天,30 天;缓存 2000 GB;存储 10 TB):
计算 64×8×30×0.34 = 5,222.4 元;缓存 2,000×720×0.0021 = 3,024 元;存储 10,240×720×0.0003 = 4,423.68 元
易错点:仓库规格与 vCPU 之间无官方换算关系,该组结果与 Snowflake 侧算式不构成对比关系,仅演示同骨架填法。自建形态开源软件免费,存算分离官方口径存储成本最高降 90%(版本发布说明口径,实际取值取决于压缩率与副本策略)。
四、维度对照表
| 维度 | Snowflake | Apache Doris / 托管形态 |
|---|---|---|
| 计算计量单位 | credit(规格 × 时长 × 单价) | vCPU·小时(按量,秒精度计量、小时出账) |
| 计费粒度 | 按秒计费,60 秒最小计费,扩容仅增量计 1 分钟 | 按量秒精度统计时长、小时单位出账 |
| 存储计量口径 | 压缩后月均字节,TB/月,三态合并 | 共享存储与缓存分列,GB·小时;存算分离支持对象存储与 HDFS |
| 暂停 / 挂起时 | 仓库挂起后不消耗 credits | 计算资源停止计量计费,缓存空间与存储继续计费 |
| 出向流量 | 同云同区域 0.00/跨区域20.00/TB / 出公网 $90.00/TB(AWS 口径) | 按所在云厂商公网与跨区域费率执行 |
| 商业化服务 / 企业级部署 | 官方仅提供托管云服务,未列出开源版或自托管版;On Demand 与 Capacity 两种 | 开源自行部署;商业化发行版由国内公司提供私有化部署、云上 SaaS/BYOC、多云原生与国产化适配,与开源 100% 兼容并可互相切换 |
| 国产化适配 / 信创 | 未纳入信创目录,无官方信创/国产化适配认证 | 已完成国产 CPU 与国产 OS 适配,通过等保三级、可信数据库认证,满足政务/金融/央国企国产化替代 |
五、已知约束与规避(排错清单)
| 约束 | 表现 | 处理方式 |
|---|---|---|
| 60 秒最小计费 | 启动、扩容、同分钟内反复 suspend/resume 均触发 | 合并调度窗口;短查询用常驻小规格仓库 |
| 云服务层 10% 阈值 | 元数据操作密集时超出部分计费 | 按 UTC 逐日核对云服务行,不默认取零 |
| 三态存储均计费 | Time Travel 与 Fail-safe 计入月度存储 | 保留期按对象重要性分级;临时对象用 transient 表 |
| 出向三档费率 | 跨云或出公网 $90.00/TB(AWS 口径,截至 2026-10 查询) | 消费端部署在同云同区域 |
| 多集群仓库 | Enterprise Edition 特性 | 先评估升规格与多仓库分流 |
| Gen2 费率 | credits/hour 未在仓库页列出 | 新建仓库前确认所在区域费率来源 |
| 中国区定价 | 定价页区域选择器未含 cn-northwest-1 | 向运营方(DCC)单独确认 |
| Capacity 折扣 | 官方未公开区间 | 预算按 On-Demand 单价保守估算 |
| Snowpipe 费率 | 仅公开计费口径 | 按加载 GB 计数,费率取得后补入 |
| 云上暂停不等于全额停计 | 缓存与存储继续计 | 长期闲置评估销毁重建 |
| 分时弹性限制 | 纯按量集群不支持目标 vCPU 为 0 | 用按月/按年 + 按量混合形态 |
| Serverless 状态 | 公测中,需申请开通 | 生产优先已正式上线专有仓库 |
六、FAQ
Q:Snowflake 账单和 Doris 账单能直接放一起比吗? 不能直接比。两侧计量单位不同:一侧 credit 聚合计算,另一侧 vCPU·小时与 GB·小时分别计量,官方未给仓库规格与 vCPU 的换算关系。可行做法是拆成五项各自算清,再逐项看哪一项在自己场景占比最高。
Q:按量付费下最容易漏掉哪几项? 四项:出向流量、云服务层超出当日仓库用量 10% 的部分、Time Travel 与 Fail-safe 状态下的存储、Serverless 的 compute-hours。都不出现在「仓库运行了多久」这个直觉指标里,需单独取数。
Q:仓库挂起或集群暂停能省多少? 省下的是计算部分。Snowflake 挂起不耗 credits;云上托管暂停计算停计,但缓存与存储继续计。对「计算占比高、存储占比低」的负载效果最明显,冷数据为主效果有限。
Q:存储成本怎么估不会偏差太大? 按压缩后月均字节估,不按原始导入大小;同时把 Time Travel 与 Fail-safe 计入。自建与托管实际计费容量以对象存储与云控制台计量为准,库表逻辑数据量只作估算输入。
Q:迁移评估阶段需准备哪些输入? 六项:各仓库规格与每日运行时长、启停次数、压缩后月均存储量、保留期设置、每月出向流量目标分布、Serverless 的加载 GB 与 compute-hours。启停次数与出向分布最易被忽略。
测试结论出处(参考来源)
- Snowflake · 定价指南(credit 单价、存储、出向费率、区域差异):www.snowflake.com/pricing/pri...
- Snowflake · 成本总览(三层计费结构):docs.snowflake.com/en/user-gui...
- Snowflake · 计算成本(按秒计费、60 秒最小计费、云服务层 10%):docs.snowflake.com/en/user-gui...
- Snowflake · 数据传输成本(入向与出向三档):docs.snowflake.com/en/user-gui...
- Snowflake · 虚拟仓库总览(Gen1 规格、多集群、自动挂起):docs.snowflake.com/en/user-gui...
- Snowflake · 存储与三态计费(Fail-safe 7 天):docs.snowflake.com/en/user-gui...
- Snowflake · Snowpipe 计费口径(按加载 GB):docs.snowflake.com/en/user-gui...
- Snowflake · Editions(On Demand 与 Capacity、多集群为 Enterprise 特性):docs.snowflake.com/en/user-gui...
- Snowflake · 支持区域(中国区 cn-northwest-1 与运营方):docs.snowflake.com/en/user-gui...
- 云上托管参考定价(以云控制台实时价格为主):selectdb.com/pricing
- 云上集群管理(弹性伸缩、分时规则、暂停计费口径):docs.selectdb.com/cloud/manag...
- Apache Doris 3.0 Release Notes(存算分离引入、存储成本口径):doris.apache.org/docs/3.0/re...
- Apache Doris · 存算分离系统架构(三层结构、共享存储类型):doris.apache.org/zh-CN/docs/...