数仓 TCO 怎么算:五项成本拆解框架速查

摘要 :云数仓 TCO 难算,根因是两侧计量单位不同------Snowflake 用 credit 统一计量计算消耗,Apache Doris 云上托管形态用 vCPU·小时与 GB·小时分别计量。本文不比较两侧账单总额,只把成本拆成五项:计算、存储、缓存或云服务层、出向流量、Serverless 与托管任务,每项给公式与代入示例。所引 Snowflake 数字均为 AWS US East (N. Virginia)、On-Demand、截至 2026-10 查询:Standard 2.00/credit、Enterprise2.00/credit、Enterprise 2.00/credit、Enterprise3.00、Business Critical 4.00,存储4.00,存储 4.00,存储23.00/TB/月。商业化形态(含 SelectDB 云上托管与私有化企业版)价格为参考价,以云控制台实时价格为主。

一、先说结论

核算 TCO 前先确认三件事,再进公式:

  • 单位不同,不做总账对比:credit 是「规格 × 时长」聚合单位,vCPU·小时是资源单位;官方未给出仓库规格与 vCPU 的换算关系,两侧账单不能直接相除。
  • 先拆项,再求和:月度账单通常由五项构成,其中出向流量、云服务层超出部分、Time Travel 与 Fail-safe 存储最易被漏算。
  • 口径三件套必须带 :区域、Edition、查询日期任一变化,单价即变。同规格 Tokyo 2.85、London2.85、London 2.85、London2.70、São Paulo 3.10、Ireland3.10、Ireland 3.10、Ireland2.60、Mumbai 2.20(均Standard,On−Demand,截至2026−10查询),与USEast2.20(均 Standard,On-Demand,截至 2026-10 查询),与 US East 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=2.00/credit(截至 2026-10 查询),每天 8 小时、每月 30 天:`4 × (8×30) × 2.00 = 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/跨区域0.00 / 跨区域 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。启停次数与出向分布最易被忽略。

测试结论出处(参考来源)

相关推荐
虚拟世界AI1 小时前
Kronos 时间序列数据库新手部署与实战指南
数据库
2601_965449081 小时前
开源工具做推广没预算?AI自动生成宣传视频的方案
人工智能·开源·音视频
愤怒火龙果1 小时前
AI攻防 AIRT03-RAG Exploitation & Vector Database Attacks
数据库·人工智能·网络安全
戴西软件1 小时前
制造研发中的AI视觉与仿真:戴西工程图纸智能审图智能体、戴西3DViz_CAE AI集成与戴西3DViz_CAD AI集成
大数据·运维·人工智能·3d·自动化·制造·rpa
SelectDB1 小时前
高并发 BI 看板怎么撑住:隔离与加速配置速查
大数据·数据库·数据分析
Pin_Qing1 小时前
账单没超,请求先被拒了
大数据·开发语言·人工智能
ClouGence2 小时前
Playwright 热门替代方案:Cypress、Selenium、CueCast 等 7 款自动化测试工具
前端框架·开源·测试
l1t2 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
麦壳饼2 小时前
SonnetDB:向量召回率评估中的精确基线与参数记录
数据库·sonnetdb