小批次,稳定进度
对数百万行执行单条 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 的水位是否持续推进;停滞说明任务卡住。