MSSQL:每天有一个2GB的分区表,我们需要通过页面压缩来压缩这个表。压缩后,如果从表属性-存储中检查,表的大小就会变小。但是在压缩之后,磁盘空间并没有发生任何变化。我需要在磁盘上获得一些空间,并想知道缩小任何类型(文件、数据库)是否会有帮助。
我想听听你的建议。谢谢
发布于 2018-07-12 14:31:51
为了回收磁盘空间,您必须使用SHRINKFILE。通常关于发生的数据碎片和需要重建索引以解决该碎片的警告适用。
下面是一个示例查询,用于确定哪个分区位于哪个文件组上。(从确定表的文件组借来)
SELECT OBJECT_SCHEMA_NAME(t.object_id) AS schema_name
,t.NAME AS table_name
,i.index_id
,i.NAME AS index_name
,p.partition_number
,fg.NAME AS filegroup_name
,FORMAT(p.rows, '#,###') AS rows
FROM sys.tables t
INNER JOIN sys.indexes i
ON t.object_id = i.object_id
INNER JOIN sys.partitions p
ON i.object_id = p.object_id
AND i.index_id = p.index_id
LEFT OUTER JOIN sys.partition_schemes ps
ON i.data_space_id = ps.data_space_id
LEFT OUTER JOIN sys.destination_data_spaces dds
ON ps.data_space_id = dds.partition_scheme_id
AND p.partition_number = dds.destination_id
INNER JOIN sys.filegroups fg
ON COALESCE(dds.data_space_id, i.data_space_id) = fg.data_space_id
ORDER BY p.partition_numberhttps://dba.stackexchange.com/questions/212014
复制相似问题