SQL SERVER利用分区对大数据表处理操作手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL SERVER 2005利用分区对大数据表处理操作手册超大型数据库的大小常常达到数百GB,有时甚至要用TB来计算。而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。这不但影响着数据库的运行效率,也增大数据库的维护难度。除了表的数据量外,对表不同的访问模式也可能会影响性能和可用性。这些问题都可以通过对大表进行合理分区得到很大的改善。当表和索引变得非常大时,分区可以将数据分为更小、更容易管理的部分来提高系统的运行效率。如果系统有多个CPU或是多个磁盘子系统,可以通过并行操作获得更好的性能。所以对大表进行分区是处理海量数据的一种十分高效的方法。本文通过一个具体实例,介绍如何创建和修改分区表,以及如何查看分区表。
SQL Server 2005是微软在推出SQL Server 2000后时隔五年推出的一个数据库平台,它的数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。此外SQL Server 2005结合了分析、报表、集成和通知功能。这使企业可以构建和部署经济有效的BI解决方案,帮助团队通过记分卡、Dashboard、Web Services 和移动设备将数据应用推向业务的各个领域。无论是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005都可以提供出创新的解决方案,并可从数据中获得更多的益处。
它所带来的新特性,如T-SQL的增强、数据分区、服务代理和
与.NetFramework的集成等,在易管理性、可用性、可伸缩性和安全性等方面都有很大的增强。
表分区的具体实现方法:
表分区分为水平分区和垂直分区。水平分区将表分为多个表。每个表包含的列数相同,但是行更少。例如,可以将一个包含十亿行的表水平分区成12个表,每个小表表示特定年份内一个月的数据。任何需要特定月份数据的查询只需引用相应月份的表。而垂直分区则是将原始表分成多个只包含较少列的表。水平分区是最常用分区方式,本文以水平分区来介绍具体实现方法。水平分区常用的方法是根据时期和使用对数据进行水平分区。例如本文例子,一个短信发送记录表包含最近一年的数据,但是只定期访问本季度的数据。
在这种情况下,可考虑将数据分成四个区,每个区只包含一个季度的数据。
以下是创建过程:
一、最基本,最重要的一步就是创建分区函数。创建分区函数首先要确定分区键--既按照哪字段来进行分区。在这里,使用记录的时间来作为分区键,由于数据量的问题,最终决定每个月的数据放一个单独的分区。
CREATE PARTION FUNCTION FiveYearDateRangePFN(datetime)
AS
RANGE LEFT FOR VALUES (
' 23:59:59.997',--
2006年9月
' 23:59:59.997',--
2006年10月
' 23:59:59.997',--
2006年11月
' 23:59:59.997',--
2006年12月
' 23:59:59.997',--
2007年1月
' 23:59:59.997',--
2007年2月
' 23:59:59.997',--
2007年3月
' 23:59:59.997',--
2007年4月
' 23:59:59.997',--
2007年5月
' 23:59:59.997',--
2007年6月
'200731 23:59:59.997',-- 2007年7月
' 23:59:59.997',--
2007年8月
' 23:59:59.997',--
2007年9月
' 23:59:59.997',--
2007年10月
' 23:59:59.997',--
2007年11月
' 23:59:59.997',--
2007年12月.......}GO
二、上一步是完成一个概念上的分区,接下来要完成一个物理的构建,使得属于不同分区的数据存储到不同的物理文件上去.
a.创建文件组
创建多个文件组主要是为了获得好的I/O 平衡。一般情况下,文件组数最好与分区数相同,并且这些文件组通常位于不同的磁盘上。每个文件组可以由一个或多个文件构成,而每个分区必须映射到一个文件组。一个文件组可以由多个分区使用。为了更好地管理数据(例如,为了获得更精确的备份控制),对分区表应进行设计,以便只有相关数据或逻辑分组的数据位于同一个文件组中。使用ALTER DATABASE,添加逻辑文件组名:
--File group for 2006
ALTER DATABASE MES ADD FILEGROUP [Teaching200609]
ALTER DATABASE MES ADD FILEGROUP [Teaching200610]
ALTER DATABASE MES ADD FILEGROUP [Teaching200611]
ALTER DATABASE MES ADD FILEGROUP [Teaching200612]
--File group for 2007
ALTER DATABASE MES ADD FILEGROUP [Teaching200701]
ALTER DATABASE MES ADD FILEGROUP [Teaching200702]
ALTER DATABASE MES ADD FILEGROUP [Teaching200703]
ALTER DATABASE MES ADD FILEGROUP [Teaching200704]
ALTER DATABASE MES ADD FILEGROUP [Teaching200705]
ALTER DATABASE MES ADD FILEGROUP [Teaching200706]
ALTER DATABASE MES ADD FILEGROUP [Teaching2007]
ALTER DATABASE MES ADD FILEGROUP [Teaching200708]