数据库分区(一)
一、项目背景
报表数据库已经投入使用了近4年,数据库的大小由当初的几M变成了2246676.88M,即约为2.2T,作为关系数据库中,TB级别使用起来相当不理想,报表用户提交一个查询请求,几乎无法返回结果。在此背景下,提出了对现有数据库进行按照日期进行分区,以提高数据库的性能。
二、环境分析
2.1 软硬件环境
数据库版本:sql server 2008
大小:2246676.88M
排序规则:Chinese_FRC_CI_AS
操作系统:windows server 2008 R2 for Itanium-Based Systems Service Pack 1
CPU:32核,16个处理器,Itanium2 1.60GHz
内存:64G
64位操作系统
2.2 表使用情况分析
根据用户对报表的使用需求,分为两大类,一类是需要数据库中存储最近14个月的数据,另一类是存储36个月的数据。
根据表的使用情况,分为
- 结果表:存储报表结果的表。
- 业务表:存储业务数据的表。
- 中间表:介于结果表和业务表之间的表,且是经过一定的计算的。
- 跑批表:其他系统跑批存储的临时表,会定时删除。
- 参数表:存储各类参数。
以上各个表中,除了参数表,其他的表都很巨大,且仍在不断增长中,故对主要的结果表和业务表和中间表进行分区。