首页/数据/数据工程与 ETL 速查/数仓存储与计算成本治理

数仓存储与计算成本治理

成本治理从三处入手:存储(生命周期与压缩格式)、计算(避免全表扫描与重复加工)、调度(错峰与资源队列);结合用量账单按表与任务排名,优先处理高消耗长尾。

数仓成本治理从哪里入手

成本治理从三处入手:存储(列存压缩格式、生命周期与归档、清理无引用表)、计算(分区裁剪、减少重复扫描与重复加工、复用公共层)、调度(错峰执行、限制并行度、按优先级分级队列)。有效做法是先度量再优化:结合用量账单按表与任务统计存储与计算消耗排名,优先处理高消耗长尾,并把治理项落到责任人与时间点——只出报告不跟进,成本很快会回到原位。

基本信息

存储侧列存压缩(ORC、Parquet)、分层保留、清理无引用表与小文件
计算侧分区裁剪、减少重复扫描、复用公共层结果
调度侧错峰执行、限制并行度、任务队列分级
度量方式按表与任务统计存储与计算消耗排名
落地要求每一项治理有负责人与完成时间

典型使用场景

  • 季度成本复盘:按表列出存储与计算消耗排名,确认优化对象
  • 小文件治理:合并大量小文件,降低元数据压力与查询开销
  • 重复加工排查:多张表算同一个指标,合并到公共层
  • 调度错峰:把非紧急任务挪出高峰,缓解资源争抢
  • 僵尸表下线:长期无查询、无下游引用的表确认后删除或归档

低成本排查清单

低成本排查清单
-- 找出占用存储较大的表,结合查询日志判断是否可清理
SELECT table_name, SUM(file_size) AS size_bytes
FROM table_storage_meta
GROUP BY table_name
ORDER BY size_bytes DESC
LIMIT 20;

-- 小文件检查:文件数远大于分区数通常说明写入产生大量小文件
SELECT table_name, dt, COUNT(1) AS file_cnt, SUM(file_size) AS bytes
FROM table_storage_meta
GROUP BY table_name, dt
HAVING COUNT(1) > 1000
ORDER BY file_cnt DESC LIMIT 20;

-- 说明:先看账单与查询日志再动手,避免优化到无人使用的表上

治理动作对照

动作预期收益风险前置确认
合并小文件查询更快、元数据更轻合并期间写入需错峰是否有实时写入
压缩格式改造存储显著下降需重写历史数据重写窗口与资源
生命周期清理存储持续下降误删影响回溯血缘影响面与备份
公共层复用计算与人力双降需业务口径确认口径一致性检查
治理要落到责任人与时间点:只出报告不跟进时,成本会在两三个月内回到原位,下一次复盘还是同一批表。
为省成本删掉明细层是不可逆的选择:一旦需要回溯或重建,成本往往高于当初节省的存储,通常建议改为压缩或转低频存储。
先看账单再优化:按消耗排名做,避免把时间花在消耗很低但结构复杂的表上,投入产出比会好很多。

易错点

  • 只压缩格式不清理冗余表与小文件,收益有限且很快被新增数据抵消
  • 为省成本删掉明细层,导致无法回溯,重建成本远高于节省的存储
  • 治理项只出报告不跟进责任人与时间点,成本很快回到原位
  • 优化前不看查询日志,把精力花在无人使用的表上,账单没有变化

数据来源与参考

  • 行业数据平台成本治理实践
  • Apache ORC 官方文档(压缩与存储)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌