超大型 数据 库的大小常常达到数百GB,有时甚至要用TB来计算。而单表的 数据 量往往会达到上亿的记录,并且记录数会随着时间而增长。这不但影响着 数据 库的运行效率,也增大 数据 库的维护难度。除了表的 数据 量外,对表不同的访问模式也可能会影响性能和
超大型 数据 库的大小常常达到数百GB,有时甚至要用TB来计算。而单表的 数据 量往往会达到上亿的记录,并且记录数会随着时间而增长。这不但影响着 数据 库的运行效率,也增大 数据 库的维护难度。除了表的 数据 量外,对表不同的访问模式也可能会影响性能和可用性。这些问题都可以通过对大表进行合理分区得到很大的改善。当表和索引变得非常大时,分区可以将 数据 分为更小、更容易管理的部分来提高系统的运行效率。如果系统有多个CPU或是多个磁盘子系统,可以通过并行操作获得更好的性能。所以对大表进行分区是 处理 海量 数据 的一种十分高效的方法。本文通过一个具体实例,介绍如何创建和修改分区表,以及如何查看分区表。
1 SQL Server 2005
SQL Server 2005是微软在推出SQL Server 2000后时隔五年推出的一个 数据 库平台,它的 数据 库引擎为关系型 数据 和结构化 数据 提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的 数据 应用程序。此外SQL Server 2005结合了分析、报表、集成和通知功能。这使企业可以构建和部署经济有效的BI解决方案,帮助团队通过记分卡、Dashboard、Web Services和移动设备将 数据 应用推向业务的各个领域。无论是开发人员、 数据 库管理员、信息工作者还是决策者,SQL Server 2005都可以提供出创新的解决方案,并可从 数据 中获得更多的益处。
它所带来的新特性,如T-SQL的增强、 数据 分区、服务代理和与.Net Framework的集成等,在易管理性、可用性、可伸缩性和安全性等方面都有很大的增强。
2 表分区的具体实现方法
表分区分为水平分区和垂直分区。水平分区将表分为多个表。每个表包含的列数相同,但是行更少。例如,可以将一个包含十亿行的表水平分区成 12 个表,每个小表表示特定年份内一个月的 数据 。任何需要特定月份 数据 的查询只需引用相应月份的表。而垂直分区则是将原始表分成多个只包含较少列的表。水平分区是最常用分区方式,本文以水平分区来介绍具体实现方法。
水平分区常用的方法是根据时期和使用对 数据 进行水平分区。例如本文例子,一个短信发送记录表包含最近一年的 数据 ,但是只定期访问本季度的 数据 。在这种情况下,可考虑将 数据 分成四个区,每个区只包含一个季度的 数据 。
2.1 创建文件组
建立分区表先要创建文件组,而创建多个文件组主要是为了获得好的 I/O 平衡。一般情况下,文件组数最好与分区数相同,并且这些文件组通常位于不同的磁盘上。每个文件组可以由一个或多个文件构成,而每个分区必须映射到一个文件组。一个文件组可以由多个分区使用。为了更好地管理 数据 (例如,为了获得更精确的备份控制),对分区表应进行设计,以便只有相关 数据 或逻辑分组的 数据 位于同一个文件组中。使用 ALTER DATABASE,添加逻辑文件组名:
ALTER DATABASE [DeanDB] ADD FILEGROUP [FG1]
DeanDB为 数据 库名称,FG1文件组名。创建文件组后,再使用 ALTER DATABASE 将文件添加到该文件组中:
ALTER DATABASE [DeanDB] ADD FILE ( NAME = N'FG1', FILENAME = N'C:DeanDataFG1.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG1]
类似的建立四个文件和文件组,并把每一个存储 数据 的文件放在不同的磁盘驱动器里。
查看更多关于SQLServer2005对海量数据处理的详细内容...