Table 按 table 大小分组压缩
Table compression with group by table size
我有一个非常大的数据库,即将用完所有 space。所以我想检查所有大的 tables 是否都被压缩了。我有一些关于列出所有解压缩 table 的脚本,但是如果有人能告诉我如何 运行 查询可以列出所有解压缩 table 按 table 大小排序.
这应该可以满足您的需求。具体看data_compression_desc.
use <DatabaseName, sysname, >
go
set nocount on
go
select
IndexName = i.Name,
TableName = object_name(p.object_id),
IndexRows = p.rows,
DataCompression = data_compression_desc,
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.partitions p
inner join sys.dm_db_partition_stats ps
on p.partition_id = ps.partition_id
and p.object_id = ps.object_id
inner join sys.indexes i
on p.object_id = i.object_id
and p.index_id = i.index_id
where p.object_id = object_id('<DatabaseName, sysname, >.dbo.<TableName, sysname, >')
诊断
SSMS 中有一些标准报告,您可以使用它们查看所有表使用的所有磁盘 spaced,以及是否有分配给任何表的未使用磁盘 space表。
如果您在对象资源管理器中右键单击数据库名称并转到报告,您可以找到许多内置报告。在您的情况下,Disk Usage by Top Tables
是您应该查看的那个。
修复
一旦你找到罪魁祸首,有很多未使用的表 space 你可以使用 DBCC CLEANTABLE
命令回收未使用的 space.
我有一个非常大的数据库,即将用完所有 space。所以我想检查所有大的 tables 是否都被压缩了。我有一些关于列出所有解压缩 table 的脚本,但是如果有人能告诉我如何 运行 查询可以列出所有解压缩 table 按 table 大小排序.
这应该可以满足您的需求。具体看data_compression_desc.
use <DatabaseName, sysname, >
go
set nocount on
go
select
IndexName = i.Name,
TableName = object_name(p.object_id),
IndexRows = p.rows,
DataCompression = data_compression_desc,
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.partitions p
inner join sys.dm_db_partition_stats ps
on p.partition_id = ps.partition_id
and p.object_id = ps.object_id
inner join sys.indexes i
on p.object_id = i.object_id
and p.index_id = i.index_id
where p.object_id = object_id('<DatabaseName, sysname, >.dbo.<TableName, sysname, >')
诊断
SSMS 中有一些标准报告,您可以使用它们查看所有表使用的所有磁盘 spaced,以及是否有分配给任何表的未使用磁盘 space表。
如果您在对象资源管理器中右键单击数据库名称并转到报告,您可以找到许多内置报告。在您的情况下,Disk Usage by Top Tables
是您应该查看的那个。
修复
一旦你找到罪魁祸首,有很多未使用的表 space 你可以使用 DBCC CLEANTABLE
命令回收未使用的 space.