← 中文资源

简体中文版本

安全回填大表

用小批幂等回填、水位记录、写入限流和覆盖验证,避免长锁与复制延迟。

阅读英文原文

小批次,稳定进度

对数百万行执行单条 UPDATE 会持锁、生成大事务,并可能压垮副本。回填处理有界范围、提交、记录水位,然后继续。任务可重启且幂等:已回填的行会被跳过。

UPDATE orders
SET shipping_zone = 'standard'
WHERE id IN (
  SELECT id FROM orders
  WHERE shipping_zone IS NULL
  ORDER BY id
  LIMIT 1000
)
RETURNING id;

按系统预算限流

回填是与用户竞争的后台负载。测量锁等待时间、数据库 CPU 和复制延迟,超过阈值就暂停。批次间延迟比停机更便宜。批大小应可配置,并从小规模开始。

验证覆盖

对比回填前后的行数与空值计数,抽样检查关键记录,并确认没有长时间锁等待。监控最老未完成 id 的水位是否持续推进;停滞说明任务卡住。