1、分库
水平分库:
- 数据库文件分放到不同磁盘,充分利用IO
- 表分区:表数据库可以进行分区,按照条件分区
- 主动分区:历史数据放到历史表,当前表放当前3天的数据(设计到数据复制到历史表,一般服务晚上执行sql)
垂直分库:
- 把数据库分成多个数据库。根据业务模块分,例如用户相关的放到一个库,订单相关放到一个库。当然会设计到某个表的关联比较强,此时需要业务代码分开查询sql。不要连库查询。
2、数据库集群
- 读写分离。一些库专门用来写数据,一些库用来读数据。(设计到数据同步问题),解决同步问题:sqlserver有订阅发布,读数据库订阅写数据库的修改信息进行同步数据。
3、用缓存解决磁盘IO问题
- Redis
其他优化:提升硬件,建表索引(索引一般用于读比较多的表,因为如果写比较多的表建索引,会引起索引重建降低性能)。