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

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

 2010-03-10 00:00:00 来源:WEB开发网   
核心提示: 对于切换分区,即使是上千万级别的数据,SqlServer性能优化:Partition(管理分区)(3),也可以在不到1秒的时间完成分区的切换,所以虽然从表面上看,查出分区函数MyPartitionFunc的第一个分区的右边界:SELECTvalueFROMsys.partition_range_

对于切换分区,即使是上千万级别的数据,也可以在不到1秒的时间完成分区的切换。所以虽然从表面上看,切换分区和调用Select或者Insert语句移动数据的结果是一样的,但效率却是不可同日而语的。

查看分区信息

除了利用上文提到的通过“管理压缩”的方式查看某张表的分区信息之外,SQL Server还提供了一张系统表查看数据库中的分区情况:

SYS.PARTITION_SCHEMES,数据库中所有分区方案的信息,包括对应的分区函数的ID。

SYS.PARTITION_FUNCTIONS,数据库中所有分区函数的信息,包括分区数等信息。

SYS.PARTITION_RANGE_VALUES,每个分区范围的信息,可以和SYS.PARTITION_FUNCTIONS联查。

比如可以通过如下的脚本,查出分区函数MyPartitionFunc的第一个分区的右边界:

SELECT value FROM sys.partition_range_values, sys.partition_functions 
WHERE sys.partition_functions.function_id = sys.partition_range_values.function_id 
AND sys.partition_functions.name = 'MyPartitionFunc' AND boundary_id = 1

还可以通过如下脚本,获取分区表中各分区的数据情况(行数,最大值,最小值):

SELECT 
  partition = $PARTITION.MyParitionFunc([ParitionDate]) 
  ,rows   = COUNT(*) 
  ,min  = MIN([ParitionDate]) 
  ,max  = MAX([ParitionDate]) 
FROM [MyTable] 
GROUP BY $PARTITION.MyParitionFunc([ParitionDate]) 
ORDER BY PARTITION

具体可以参照MSDN:从已分区表和索引中查询数据和元数据

上一页  1 2 3 

Tags:SqlServer 性能 优化

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