Sql Server性能优化——Partition(管理分区)编辑点评:正如文章"SqlServer 性能优化——Partition(创建分区)"中所述,分区并不是一个一劳永逸的操作,对一张表做好分区仅仅是开始,接下来可能需要频繁的变更分区,管理分区。
在企业管理器中,虽然有“管理分区”的菜单,里面的内容却可能与你的预想不同,这里并没有提供直接对分区进行操作的方法,所以一些普通的操作,比如“增加分区”、“删除分区”之类的操作就需要通过脚本实现了。 增加分区(Split Partition)“增加分区”事实上就是将现有的分区分割开,基于此,在SQL Server中应用的是Split操作。在分离分区的时候,不仅仅要在Partition Function上指定分割的分界点,同样需要在Partition Scheme上指定新分区应用的文件组: --指定下一个分区应用文件组PRIMARY 需要注意的一点是,新增的分区中非聚簇索引的压缩模式会被置为None。 删除分区(Merge Partition)“删除分区”同样可以认为是将原来分离的分区合并在一起,所以对应的是Merge操作,而且由于并没有新增的分区,Partition Scheme并不需要改变: ALTER PARTITION FUNCTION MyPartitionFunction () 切换分区(Switch Partition)“切换分区”可能是一个比看上去会应用的更频繁的操作,它的意义在于将一个分区的数据从一张表切换到另一张表中。这里定义被切换分区的表为“源表”,被切换到的表为“目标表”,则执行切换操作的前提是:
下面的操作将源表的第二个分区切换到目标表的第二个分区中。 ALTER TABLE [STable] SWITCH PARTITION 2 TO [DTable] PARTITION 2 分区管理操作的性能分割、合并以及切换分区是元数据上的操作而不是对数据的移动,所以操作的效率要比直接操作数据高很多。
查看分区信息除了利用上文提到的通过“管理压缩”的方式查看某张表的分区信息之外,SQL Server还提供了一张系统表查看数据库中的分区情况:
比如可以通过如下的脚本,查出分区函数MyPartitionFunc的第一个分区的右边界: SELECT value FROM sys.partition_range_values, sys.partition_functions 还可以通过如下脚本,获取分区表中各分区的数据情况(行数,最大值,最小值): SELECT |
|
来自: 家住天地 > 《sqlserver》