1、不分库分表
软优化
数据库连接池优化
慢sql优化,分析执行计划,改写sql和代码
优化表索引
引入nosql, 调整程序架构
硬优化
带宽、cpu、硬盘
2、分库分表
分表
解决单表数据量很大时,数据查询慢问题
垂直分表:表结构拆分
解决:表字段太多,每个字段访问频次不一样,将表根据字段使用频率拆分成2个表,释放IO资源
水平分表:数据拆分
解决:表数据量过大,查询时间慢,DDL(create/alter/add)时,锁表时间长 。
分库
如果分表解决不了问题,再考虑分库
解决访问量过大,单个数据库连接数过多问题。
垂直分库
解决数据库连接不够的问题,对不同业务进行拆分,一般单体项目改为微服务项目就是垂直分库。
水平分库
库的结构都一样,数据不一样。
带来的问题
- 分布式事务
2)排序、分页、函数计算等问题
3)主键重复
4)数据扩容
分库分表中间件 ShardingSphere
简介
是⼀套开源的分布式数据库解决⽅案组成的⽣态圈,定位为
Database Plus
它由 JDBC、Proxy 和 Sidecar这 3 款既能够独⽴部署,⼜⽀
持混合部署配合使⽤的产品组成
三大构成
ShardingSphere-Sidecar
ShardingSphere-JDBC
ShardingSphere-Proxy