最近遇到一个反馈说系统查询很慢,经常发生超时的问题,因系统上线比较久,部分数据表数据量比较大,常用的表少则1千多万,多的超过1亿条数据,且都是常用的表。目前想到的方案有:
- 分库:报表查询用一个库,操作用一个库。这样的改动对于系统来说改动比较小,但基本无法解决超时的问题;
- 分表:对于报表的改动比较大,是一个备选方案;
- 表分区:看到有文章介绍说表分区可解决性能问题,因表分区不需要对业务代码做任何改变,基于此特性我做了个验证。
关于表分区的操作过程可参考:SQL Server表分区
如果需要调整表分区方案可参考:SQL修改表分区方案(高效)
-- 增加分区文件 ALTER PARTITION SCHEME fa_main NEXT USED [db06] -- 新增分区表,加入新的分区规则,执行后它会自动将数据迁移到新的分区中 ALTER PARTITION FUNCTION fn_main() SPLIT RANGE(50000000)