语法
sp_estimate_data_compression_savings [ @schema_name = ] ‘schema_name‘ , [ @object_name = ] ‘object_name‘ , [@index_id = ] index_id , [@partition_number = ] partition_number , [@data_compression = ] ‘data_compression‘ [;]
参数
2,返回的结果集
将返回以下结果集,以提供表、索引或分区的当前大小和估计大小。
|
列名 |
数据类型 |
说明 |
|---|---|---|
|
object_name |
sysname |
表或索引视图的名称。 |
|
schema_name |
sysname |
表或索引视图的架构。 |
|
index_id |
int |
索引的索引 ID: 0 = 堆 1 = 聚集索引 > 1 = 非聚集索引 |
|
partition_number |
int |
分区号。 对于未分区的表或索引,返回 1。 |
|
size_with_current_compression_setting (KB) |
bigint |
当前存在的所请求的表、索引或分区的大小。 |
|
size_with_requested_compression_setting (KB) |
bigint |
使用请求的压缩设置及现有填充因子(如果适用)且假定不存在碎片时的表、索引或分区的估计大小。 |
|
sample_size_with_current_compression_setting (KB) |
bigint |
使用当前压缩设置时的示例大小。 这包括任何碎片。 |
|
sample_size_with_requested_compression_setting (KB) |
bigint |
使用请求的压缩设置及现有填充因子(如果适用)创建的且没有碎片的样本的大小。 |
3,注释
- 使用 sp_estimate_data_compression_savings 估算对表或分区启用行压缩或页压缩时可能带来的节省量。例如,如果行的平均大小可以减少 40%,则可能可以将对象大小减少 40%。 您可能无法节省空间,因为这取决于填充因子和行大小。 例如,如果某行长度为 8000 字节并且您将该行的大小减少 40%,则数据页上仍只能容纳一行。 因此不会节省空间。
- 如果运行 sp_estimate_data_compression_savings 的结果指示表的大小将增长,则表示表中的许多行使用的几乎是数据类型的完全精度,因而为满足压缩格式的需要而增加的少量开销大于该压缩所带来的节省量。在这种极个别的情况下,请不要启用压缩。
- 如果对表启用压缩,请使用 sp_estimate_data_compression_savings 估算在未压缩该表的情况下该行的平均大小。
- 在此操作期间将获取该表的 (IS) 锁。如果不能获取 (IS) 锁,则该过程将被阻止。 该表将在已提交读隔离级别下进行扫描。
- 如果请求的压缩设置与当前的压缩设置相同,则该存储过程将返回在没有数据碎片且使用现有填充因子时的估计大小。
- 如果索引或分区 ID 不存在,将不返回任何结果。
TSql sp_estimate_data_compression_savings 用法
标签: