分库分表
- 垂直分片
按照业务维度将表拆分到不同的数据库中,专库专用,分担数据库压力
- 水平分片
按某种规则将单表数据拆分到多张表中,从理论上突破了单机的数据量的瓶颈,是分库分表的标准解决方案
- 分片方案
分片的键位、分片的算法
分片的方案
- 取模分片
优点: 数据存放比较均匀
缺点: 后期扩展需要批量迁移数据
- 范围分片
优点: 扩容不需要迁移数据
缺点: 数据存放不均匀,容易产生数据倾斜存放
分库分表要解决的问题
- 主键唯一性
- 分布式事务
- SQL路由
- 结果归并
何时分库分表
- 阿里开发者手册建议预估三年内单表数据量超过500W或者单表数据文件大于2G
动态数据源切换
- AbstractRoutingDataSource (根据前端请求参数动态切换数据源)
- dynamic-datasouce (预设每个服务对应的数据源,不同服务使用不同的数据源)
ShardingSphere
- Inline策略
- Standard策略
- Complex策略
- Hint策略
