数据库的分库分表
2025年9月13日大约 1 分钟
数据库的分库分表
数据库的性能瓶颈
- 连接数
- 处理能力
- 存储容量
数据库优化方案
- SQL 优化
- 索引
- 分区
- 主从复制,读写分离: 通过数据的冗余做到从的数据库上去,主要是一个高可用的作用
- 集群: 通过负载均衡的方式实现数据的容错性,和高性能
- 向上扩展:扩展硬件
- 分库分表:
- 大数据: 当以上的方案都不能满足业务时,就要抛弃关系型数据库,改用大数据方案
什么时候考虑切分
注意事项
能不切分尽量不切分
- 数据量过大 500w~1000w(阿里规范建议单表是500w,容量不要超过2G)
- 数据增长过快(比如电商做商品促销活动,每天以500w+ 的数据量增长)
- 对某些字段进行切分(看业务需求,不同的业务数据放到不同的业务表里)
- 处于安全性和可用性来考虑
切分类型
- 垂直分库
- 垂直分表
- 水平分表
- 水平分库分表
数据切分以后的问题和解决方案
- 事物一致性的问题 XA 规范(两阶段和三阶段)
- 跨节点的关联查询问题 (join)
- 全局表
- 字段的冗余
- ER 分片
- 数据组装(比较耗时)
- 跨节点的排序,分页,函数问题,结果汇总做二次计算
- 全局主键的问题 (UUID,数据表来维护,开源的全局ID生产系统)
- 数据的迁移,扩容问题