深入浅出 MySQL 数据库高并发架构实战:深入理解分库分表的原理与应用
分库分表理论
背景
互联网系统需要处理海量用户的并发请求和数据存储。
面临挑战
- 数据量指数级增长
- 历史数据长期保存
- 高并发读写
- 查询延迟毫秒级别
解决方案
- NoSQL数据库
- NewSQL数据库
- 分库分表
垂直拆分(Vertical Partitioning)
适用场景
单个数据库中存在大量表
拆分原则
按业务领域将表分类到不同数据库
垂直分库
将用户表和订单表拆分到不同的数据库中
垂直分表
将一张表中不常用的字段拆到另一张表中
优点
- 业务解耦清晰
- 数据可维护性强
- 查询性能提升
- 缓存利用率优化
缺点
- 主键冗余管理
- 跨表连接问题
- 单表容量限制
- 事务处理困难
水平拆分(Horizontal Partitioning)
适用场景
单表数据量过大(如超过5000万条记录)
拆分方式
- 按范围拆分:如按用户ID区间划分
- 按哈希值拆分:如对订单ID取模
- 按时间拆分:如按月分表
优点
- 数据库分担计算压力
- 解决单库性能瓶颈
- 应用改造成本可控
- 系统扩展性提升
缺点
- 分片规则设计复杂
- 跨分片查询性能低下
- 分布式事务挑战
- 扩容维护成本高