原文地址:https://blog.sqlauthority.com/2021/12/15/sql-server-script-to-estimate-compression/
原文作者:Pinal Dave
今天,我们将看到一些简单的事儿也可以对性能产生巨大影响。最近,我在客户端综合数据库性能运行状况检查中实现了数据压缩。让我们讨论一下如何在SQLServer中估算压缩。
SQLServer中有两种不同类型的压缩广受欢迎,(1)页面压缩 (2)行压缩。
两种压缩
如果一张表的数据读取量大,但更新次数较少,可以选择页面压缩。如果表更新频繁,则推荐使用行压缩。通常,我曾经见到的页面压缩比行压缩效率更高,不过,这也取决于数据是怎样的以及系统是怎样设置的。
数据压缩–该不该使用?
我经常收到的问题答案是应该选择压缩。好吧,答案很简单。如果需要节省空间,可以继续进行数据和索引压缩。与写入磁盘的非压缩数据相比,压缩表和索引占用的CPU周期更多。这意味着,如果有CPU压力,压缩将进一步降低性能。
估算压缩
我们可以使用以下脚本轻松估算数据表或索引的压缩。
1. 页面压缩估算
EXEC sp_estimate_data_compression_savings
@schema_name = 'Production',
@object_name = 'WorkOrder',
@index_id = NULL,
@partition_number = NULL,
@data_compression = 'PAGE';
2. 行压缩估算
EXEC sp_estimate_data_compression_savings
@schema_name = 'Production',
@object_name = 'WorkOrder',
@index_id = NULL,
@partition_number = NULL,
@data_compression = 'ROW';
当你检查估算值以后,且没有CPU压力问题的情况下,则可以通过运行以下脚本轻松启用压缩。
启用压缩
1. 启用页面压缩
ALTER TABLE Production.WorkOrder REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = PAGE);
GO
2. 启用行压缩
ALTER TABLE Production.WorkOrder REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = ROW);
GO
3. 禁用数据压缩
ALTER TABLE Production.WorkOrder REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = NONE);
GO
请记住你可以为数据表或索引选择任何一种压缩。但不能同时用这两种压缩。
让我知道你对这篇博客的看法。如果你们想继续关注,我也可以在YouTube频道上创建一个关于此主题的视频-SQL在六十秒以内
相关可参考作者个人主页:皮纳尔·戴夫
最后修改时间:2022-04-30 15:03:28
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。