关系数据库在进行分库分表(Sharding / Partitioning)时,核心目标是解决单库单表数据量过大、并发过高、存储和性能瓶颈的问题。下面从概念、拆分方式、路由策略、实施难点和常见方案几个层面系统说明。
常见组合:
按业务模块拆分:
user_db
order_db
product_db
按字段访问频率拆分:
user_base (id, name, age)
user_ext (id, avatar, description)
✅ 优点:
❌ 缺点:
将同一张表的数据按某种规则分散到多张表/库中:
order_0
order_1
order_2
...
order_15
✅ 优点:
❌ 缺点:
选择一个高频查询条件字段作为分片键,例如:
db_index = user_id % 4
简单,但扩容麻烦
202301 ~ 202306 → db1
202307 ~ 202312 → db2
适合时间序列数据
hash(user_id) % N
分布更均匀
适合动态扩容的分布式系统
不能用数据库自增 常见方案:
✅ 对业务代码侵入小
✅ 支持分库分表、读写分离
✅ 单表数据 > 1000万
✅ 单库 QPS 明显瓶颈
✅ 数据库 CPU / IO 持续高位
❌ 不要过早分库分表(复杂度指数级上升)
分库分表不是银弹,而是架构权衡;先优化索引、SQL、缓存,再考虑分片。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。