数据库的历史表越来越大,访问速度就会慢,这是老问题了。按时间字段分表,是个比较靠谱的优化手段。像我之前ChinaGas
库的t_base_History
表,就是按CollectDate
字段来分的,效果还不错。
用的是 SQL Server 的分区功能,先建了 7 个数据库文件CGdbSF1~CGdbSF7
,每个文件对应一个时间段,文件名是CGdbSF1.ndf
这种格式,管理起来也方便。
是建分区函数CG_function
,再搞一个分区方案CG_scheme
,把这些数据库文件都挂上去。SQL Server 那一套东西还挺灵活的,用得顺手。
哦对了,MySQL、PostgreSQL、Oracle 这些数据库也都有分区功能。你用啥数据库就参考相应的资料就好,下面整理了一些不错的文章:
SQL Server 表分区:对 SQL Server 的分区机制讲得蛮清楚。
MySQL 表分区:适合 MySQL 用户看看。
PostgreSQL 表分区技术详解:Postgre 用的人也不少,讲得比较实用。
Oracle 表分区全解析:Oracle 做大数据场景还是挺稳的。
如果你手上也有大表要优化,不妨按这个思路试试。建议先在测试环境跑一套,看看执行计划和查询时间,别直接动生产哦~