本文整理自网络,侵删。
目录
- 一、分区表简介
- 二、对表分区的理由
- 三、分区表的操作步骤
- 第一步、定义分区函数:
- 第二步、定义分区构架
- 第三步、定义分区表
- 四、分区表的分割
- 五、分区表的合并
一、分区表简介
分区表是SQL Server2005新引入的概念,这个特性在逻辑上将一个表在物理上分为多个部分。(即它允许将一个表存储在不同的物理磁盘里)。在SQL Server2005之前,分区表实际上是分布式视图,也就是多个表做union操作。
分区表在逻辑上是一个表,而物理上是多个表。在用户的角度,分区表和普通表是一样的,用户角度感觉不出来。
而在SQL Server2005之前,由于没有分区的概念,所谓的分区仅仅是分布式视图:
二、对表分区的理由
表分区这个特性,只有SQL Server企业版或SQL Server开发版才有,理解表分区的概念之前,还得先理解SQL Server中文件和文件组的概念。这篇文章是解释文件和文件组的。http://1000zx.cn/article/248808.htm
表分区主要用于:
- 提供性能:这个是大多人数分区的目的,把一个表分部到不同的硬盘或其他存储介质中,会大大提升查询速度。
- 提高稳定性:当一个分区出了问题,不会影响其他分区,仅仅是当前坏的分区不可用。
- 便于管理:把一个大表分成若干个小表,则备份和恢复的时候不再需要备份整个表,可以单独备份分区。
- 存档:将一些不太常用的数据,单独存放。如:将1年前的数据记录分到一个专门的存档服务器存放。
三、分区表的操作步骤
分区表分为三个步骤:
定义分区函数
定义分区构架
定义分区表
分区函数,分区构架和分区表的关系如下:分区表依赖于分区构架,分区构架又依赖分区函数。
因此,定义分区表的顺序基本上是定义分区函数->定义分区构架->定义分区表。
实际操作,先定义一张需要分区的表:
我们以SalesDate列作为分区列。
第一步、定义分区函数:
分区函数用于判断一行数据属于哪个分区,通过分区函数中设置边界值来使得根据行中特定列的值来确定其分区。
如上面的分区表,可以通过设置SalesDate的值来判定其不同的分区,假如我们定义了SalesDate的两个边界值进行分区,则会生成三个分区,现在设置两个边界值分别为2004-01-01和2007-01-01,则上面的表就可以根据这两个边界值分出三个分区。
定义分区函数的语法如下:
CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type ) AS RANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [ ,...n ] ] ) [ ; ]
在上面定义分区函数的原型语法中,我们看到其中并没有涉及到具体的表,因为分区函数并不和具体的表绑定。
另外原型中还可以看到Range left和right,这个参数决定临界值(也就是刚好等于2004-01-01或2007-01-01的这些与分界值相等的值)应该归于左边还是右边。
创建分区函数:
--创建分区函数 CREATE PARTITION FUNCTION fnPartition(DATE) AS RANGE RIGHT FOR VALUES('2004-01-01','2007-01-01') --查看分区表是否创建成功 SELECT * FROM sys.partition_functions
上述查询语句显示结果如下:
通过系统视图,可以看见这个分区函数已经创建成功。
第二步、定义分区构架
定义完分区函数仅仅知道了根据列的值将数据分配到不同的分区。而每个分区的存储方式,则需要分区构架来定义。
分区构架语法原型:
CREATE PARTITION SCHEME partition_scheme_name AS PARTITION partition_function_name [ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] ) [ ; ]
从原型来看,分区构架仅仅是依赖分区函数。分区构架负责分配每个区属于哪个文件组,而分区函数是决定哪条数据属于哪个分区。
基于之前创建的分区函数,创建分区构架:
--基于之前的分区函数创建分区构架schema CREATE PARTITION SCHEME SchemaForParirion AS PARTITION fnPartition --这个是之前创建的分区函数 TO(FileGroup1,[primary],FileGroup1) --FileGroup1是自己添加的文件组,因为有两个分界值,3个分区,所以要指定3个文件组,也可以使用ALL所谓的分区指向一个文件组 --查看已创建的分区构架 SELECT * FROM sys.partition_schemes
以上SELECT语句输出结果如下:
相关阅读 >>
更多相关阅读请进入《sql》频道 >>

数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » SQL Server中分区表的用法
相关推荐
评论
管理员已关闭评论功能...