分区统计

对于分区表,SQL Server内部使用分区ID(PartitionID)唯一标识一个分区,对于任何一个对象(table,index 或 indexed view),每一个分区都有一个分区编号(Prtition number),该编号在对象的索引上是唯一的,用于标记基础表或索引视图的一个分区。

一,查看分区

通过系统视图:sys.partitions 查看分区对象(Table或index)的基本信息,在该视图中,如果index_id=0,表示基础表(Underlying Table)是堆(Heap)结构,堆表是没有创建的聚集索引的存储结构;如果index_id=1,表示基础表是平衡树(B-Tree)结构,在堆表上创建聚集索引,可以把堆表结构转换为平衡树(B-Tree)结构;如果index_id>1,表示索引是非聚集索引。由于基础表要么是堆表结构,要么是B-Tree结构,因此,index_id只会是0,或者1,不可能同时存在1和0。

data_compression 字段表示每个分区的数据压缩类型,rows字段表示每个分区的近似的数据总行数。通过统计rows字段,能够快速统计基础表近似的总的数据行数量,设置条件 index<=1,表示只统计聚集索引或堆表的总数据行数量。

select sum(rows) as ApproximateTotalRows
from sys.partitions
where object_id=object_id('xx.yyy','U')
    and index_id<=1

二,统计每个分区占用的存储空间
在做分区时,应尽量保证每个分区的数据行总量均匀分布,每个分区占用的存储空间均匀分布,避免单个分区过大,系统视图 sys.dm_db_partition_stats 能够查看每个分区所占用的Pages数量。

复制代码
select ps.partition_id,
    ps.object_id,
    ps.index_id,
    ps.partition_number,
    ps.in_row_data_page_count,
    ps.in_row_used_page_count,
    ps.in_row_reserved_page_count,
    ps.lob_used_page_count,
    ps.lob_reserved_page_count,
    ps.row_overflow_used_page_count,
    ps.row_overflow_reserved_page_count,
    ps.used_page_count,
    ps.reserved_page_count,
    ps.row_count
from sys.dm_db_partition_stats ps
where ps.object_id=object_id('xx.xx','U')
复制代码

统计每个分区对象的占用的总的Pages数量

复制代码
select 
    ps.object_id,
    ps.index_id,
    sum(ps.in_row_data_page_count) as data_pages,
    sum(ps.used_page_count) as used_pages,
    sum(ps.reserved_page_count) as reserved_pages
from sys.dm_db_partition_stats ps
where ps.object_id=object_id('xx.xx','U')
group by ps.object_id,ps.index_id
复制代码

三,查看每个分区的分配单元(Allocation Unit)
SQL Server为每个分区分配了一个分配单元(allcotion unit),用于为该分区分配存储空间,通过系统内部视图:sys.system_internals_allocation_units, 能够查看该alloction unit分配的Page类型等信息。

select *
from sys.system_internals_allocation_units
where container_id=72057621135294464  --partition id

参考文档:

sys.dm_db_partition_stats (Transact-SQL)

作者悦光阴
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。
分类: Partition




本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/5657516.html,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值