针对这个问题分为两种情况进行分析
- 分库分表
- 不分库分表
不分库分表情况下
-
软优化
- 数据库参数调优
- 分析慢查询SQL语句,分析执行计划,进行sql改写和程序改写
- 优化数据库索引结构
- 优化数据表结构优化
- 引入NOSQL和程序架构调整
-
硬优化
- 提升系统硬件(更快的IO、更多的内存):带宽、CPU、硬盘
分库分表情况下
- 根据业务情况而定,选择合适的分表策略
- 先看只分表是否满足业务的需求和未来增长
- 数据库分表能够解决单表数据量很大的时,数据查询的效率问题
- 无法给数据库的并发操作带来效率上的提高,分表的实质还是在一个数据库上进行的操作,受数据库IO性能的限制.
- 如果单分表满足不了需求,再分库分表一起
结论:
- 在数据量及访问压力不是特别大的情况,首先考虑缓存、读写分离、索引技术等方案
- 如果数据量极大,且业务持续增长快,再考虑分库分表方案