WEB开发网
开发学院数据库MSSQL Server SqlServer性能优化:Partition(管理分区) 阅读

SqlServer性能优化:Partition(管理分区)

 2010-03-10 00:00:00 来源:WEB开发网   
核心提示: 源表和目标表拥有同样的表结构,即同样的字段、字段类型,SqlServer性能优化:Partition(管理分区)(2),同样的索引结构(聚簇和非聚簇),同样的压缩格式,则消耗的时间较短,如果有大数据量的分区在左(<分界值),但不要求默认值约束一致(Default Constaint),也不

源表和目标表拥有同样的表结构,即同样的字段、字段类型,同样的索引结构(聚簇和非聚簇),同样的压缩格式。但不要求默认值约束一致(Default Constaint),也不要求目标表设置了和源表一样的自增长列。

源表如果有索引且分区,则其索引必须对齐。

源表中被切换的分区范围必须包含于目标表或者目标表将要被切换到的分区范围。这里有如下几种情况:

将源表的源分区切换到目标表的目标分区中,则目标分区范围>=源分区;

将源表的源分区切换到目标表中(目标表未分区),则目标表没有设约束,或约束范围>=源分区;

将源表切换到目标表中(源表、目标表都未分区),则只要目标表没有设约束就可以了(虽然Switch是分区提出的操作,但一个没有分区的表同样可以被看做一个大分区,所以可以对没有分区的表进行Switch操作)。

目标表或目标分区不能含有数据。

下面的操作将源表的第二个分区切换到目标表的第二个分区中。

ALTER TABLE [STable] SWITCH PARTITION 2 TO [DTable] PARTITION 2

分区管理操作的性能

分割、合并以及切换分区是元数据上的操作而不是对数据的移动,所以操作的效率要比直接操作数据高很多。

对于分割分区,操作时间和被分割分区的数据量相关,数据越大则分割花费的时间会越长。

对于合并分区,如果将两个空的分区合并,自然不会耗什么时间;如果两个分区都有数据,则和分割分区一样,数据越大花费的时间越长;如果两个分区中有一个没有数据,笔者的经验是如果有大数据量的分区在右(>分界值),则消耗的时间较短,如果有大数据量的分区在左(<分界值),则会消耗较多的时间。

Tags:SqlServer 性能 优化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接