← 中文资源

简体中文版本

安全地回填数仓分区

以原子交换就地回填单个分区,使查询只会看到旧数据或新数据,绝不看到半成品。

阅读英文原文

目标

某个分区的某天数据有误,就地重写会让并发查询读到半填充状态。本配方先把修正后的数据写入暂存分区(对读者不可见),再通过原子交换或替换把分区整体切换,从而让读者要么看到完整的旧分区、要么看到新分区;提醒需在切换后失效相关缓存与物化视图。

步骤要点

  1. 把修正数据写入暂存分区,对读者不可见。
  2. 用原子交换或替换整体切换分区。
  3. 切换后失效相关缓存与物化视图。
  4. 无原子交换能力时用视图切换或静默窗口。
INSERT INTO events_staging
SELECT * FROM recomputed_source
WHERE event_date = DATE '2026-10-01';

排错提示

  • 无原子能力需退化为视图切换或静默窗口。
  • 下游缓存可能陈旧,需失效。
  • 不自动校验回填数据。

适用边界

  • 原子交换依引擎而异。
  • 并发读者需容忍切换点。