欢迎来到天天文库
浏览记录
ID:38584205
大小:45.50 KB
页数:7页
时间:2019-06-15
《sqlserver2005+创建分区表+分区索引+注意事宜+分区索引》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、、分区索引1.分区表简介使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。 大型表:数据量巨大的表。Ø Ø 访问模式:因目的不同,需访问的不同的数据行集,每种目的的访问可以称之为一种访问模式。分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。注意:只能在SQLServerEnterpriseEdition中创建分区函数。只有SQLServerEnterpriseEdition支持分区。2.创建分区表
2、或分区索引的步骤可以分为以下步骤:1.确定分区列和分区数2.确定是否使用多个文件组3.创建分区函数4.创建分区架构(Schema)5.创建分区表6.创建分区索引下面详细描述的创建分区表、分区索引的步骤。2.1.确定分区列和分区数在开始做分区操作之前,首先要确定待分区表的访问模式,该模式决定了什么列适合做分区键。例如,对于销售数据,一般会先根据日期把数据范围限定在一个范围内,然后在这个基础上做进一步的查询,这样,就可以把日期作为分区列。确定了分区列之后,需要进一步确定分区数,亦即分区表中需要包含多少数据,每个分区的数据应该限定在哪个范围。2.2.确定是否使用多个文件组为了有
3、助于优化性能和维护,应该使用文件组分离数据。一般情况下,如果经常对分区的整个数据集操作,则文件组数最好与分区数相同,并且这些文件组通常应该位于不同的磁盘上,再配合多个CPU,则SQLServer可以并行处理多个分区,从而大大缩短处理大量复杂报表和分析的总体时间。2.3.创建分区函数分区函数用于定义分区的边界条件,创建分区函数的语法如下:CREATEPARTITIONFUNCTIONpartition_function_name(input_parameter_type)ASRANGE[LEFT
4、RIGHT]FORVALUES([boundary_value[,...n]]
5、)[;]参数说明: Ø partition_function_name是分区函数的名称。分区函数名称在数据库内必须唯一,并且符合标识符的规则。 Øinput_parameter_type是用于分区的列的数据类型。当用作分区列时,除text、ntext、image、xml、timestamp、varchar(max)、nvarchar(max)、varbinary(max)、别名数据类型或CLR用户定义数据类型外,所有数据类型均有效。实际列(也称为分区列)是在CREATETABLE或CREATEINDEX语句中指定的。 boundary_valueØ为使用p
6、artition_function_name的已分区表或索引的每个分区指定边界值。如果boundary_value为空,则分区函数使用partition_function_name将整个表或索引映射到单个分区。只能使用CREATETABLE或CREATEINDEX语句中指定的一个分区列。boundary_value是可以引用变量的常量表达式。这包括用户定义类型变量,或函数以及用户定义函数。它不能引用Transact-SQL表达式。boundary_value必须与input_parameter_type中提供的数据类型相匹配或者可隐式转换为该数据类型,并且如果该值的大小和
7、小数位数与input_parameter_type中相应的值的大小和小数位数不匹配,则在隐式转换过程中该值不能被截断。注意:如果boundary_value包含datetime或smalldatetime文字值,则为这些文字值在计算时假设us_english是会话语言。不推荐使用此行为。要确保分区函数定义对于所有会话语言都具有预期的行为,建议使用对于所有语言设置都以相同方式进行解释的常量,例如yyyymmdd格式;或者将文字值显式转换为特定样式。有关详细信息,请参阅编写国际化Transact-SQL语句。若要确定服务器的语言会话,请运行SELECT@@LANGUAGE。
8、 ...nØ指定boundary_value提供的值的数目,不能超过999。所创建的分区数等于n+1。不必按顺序列出各值。如果值未按顺序列出,则MicrosoftSQLServer2005数据库引擎将对它们进行排序,创建函数并返回一个警告,说明未按顺序提供值。如果n包括任何重复的值,则数据库引擎将返回错误。 LEFT
9、ØRIGHT指定当间隔值由数据库引擎按升序从左到右排序时,boundary_value[,...n]属于每个边界值间隔的哪一侧(左侧还是右侧)。如果未指定,则默认值为LEFT。创建分区函数示例:CREA
此文档下载收益归作者所有