← 中文资源

简体中文版本

数据库分片工作流

选分布均匀的分片键,经分片感知驱动路由写入,逐分片迁移行,双写窗口保持新旧同步。

阅读英文原文

分片键决定一切

差的分片键让其余每步都更难。提交前度量候选分布。时间键会让当前周期分片变热,用户 id 能均匀分散写入。

SELECT shard_key, count(*) FROM big_table GROUP BY shard_key ORDER BY count(*) DESC LIMIT 10;

双写再回填

对新行开双写,分片与源保持同步。逐分片回填已有行,校验每分片计数与源一致。双写窗口是安全网。

切换并退役

在开关后把读切到分片。盯错误率,上升即回退。整周干净后停双写并归档源。分片成为唯一真相。

验证

分片热图无热点,每分片计数与源一致,读由分片服务,错误率平稳。双写保持整周,使周批量任务在分片上跑满一周期。分片键选 user_id 而非 created_at,后者会让当前分片变热。