小编Alo*_*yte的帖子

向文件组中的文件报告空间消耗 - 如何对跨文件传播数据的算法进行逆向工程

我想知道如何计算文件组中每个文件消耗的数据分布,回到存储它的索引(HEAP、CLUSTERED、NONCLUSTERED)。我的目的是定义哪些 I/O 去磁盘上的哪个位置。

data_space_id从 开始sys.indexes,显示已使用、已分配的页面;和data_space_id大小从sys.filegroups. 所以我到达了用于将数据存储到文件组内的文件的加权(按可用空间比率?)算法生效的地方。我可以加入sys.database_files使用data_space_id.

sys.dm_allocation_units (通过object_Id和连接到索引index_Id)我得到partition_ID;加入sys.dm_partitions建议行数,使用和分配的页面,允许计算也显示每个分区的可用内容。无法分区到文件...?

我有一个查询,我根据文件组中每个文件的已使用页面的比率将 DATA 分配给 FILE,将该比率应用于存储在文件所属的文件组上的索引数据。

是否有更好的方法将表/索引数据向下钻取到文件级分配?(测量而不是计算?)

对于 indid = 0 或 indid = 1,dpages 是使用的数据页数。
对于 indid > 1,dpages 是使用的索引页数。

对于 indid = 0 或 indid = 1,used 是用于所有索引和表数据的总页数。
对于 indid > 1,used 是用于索引的页数。

对于 indid = 0 或 indid = 1,reserved 是为所有索引和表数据分配的页数。
对于 indid > 1,reserved 是为索引分配的页数。

查询语句:

Select  T.Name …
Run Code Online (Sandbox Code Playgroud)

performance monitoring sql-server dmv disk-space performance-tuning

5
推荐指数
1
解决办法
273
查看次数