SQL Server 2008数据压缩的正确执行

下面的文章主要介绍的是正确执行SQL Server 2008数据压缩的实际操作流程,在实际操作中我们对SQL Server 2008数据库的新功能进行观察时,我们发现一个叫做数据压缩的可能很有趣的功能,我们可以用这个功能来缩小表,索引或者它们分区的一个子集。

您能给我们提供如何利用这个新功能的详细解释吗?

专家解答

在SQSQL Server 2008数据压缩在SQL Server 2005 的Service Pack 2中已经可以使用了,在Service Pack 2中,引进了存储小数和数字数据。Vardecimal存储格式允许小数和数字数据类型以变长的形式存储。这个概念在SQL Server 2008中被扩展成全部定长的数据类型,比如integer,char和float 数据类型。数据压缩通过减少I/O和提高缓冲区命中率来降低储存成本和提高查询性能。

SQL Server 2008在表级别和索引级别上支持行和页的压缩。以下是两种类型的SQL Server 2008数据压缩的不同之处。

行压缩(ROW Compression) 这种压缩功能考虑到变长数据类型结构来定义一栏。比如,以变长存储的一个CHAR(100)栏只能使用由数据定义的存储空间大小。在栏中存储“SQL Server 2008”只要求存储15个字符而不是完整的100个字符,因此,在存储空间上节省率为85%。

这是在SQL Server 2005 Service Pack 2中可以使用的 vardecimal存储格式的扩展。还要注意到,这个压缩功能没有因为零或者空值而占用磁盘空间。

页级别压缩(PAGE Compression) 这种压缩功能是行压缩的父集,它考虑到给定的页内的一行或多行冗余数据。它也使用前缀和字典压缩。这仅仅意味着对于两种页压缩技术,存储引擎在页内减少重复数据。

比如,如果利用一列前缀把一张表分区,在一个具体分区中的所有数据都会有一样或者相似的前缀。让我们以一些像A1000Q-xxxx的产品代码为开始说一些栏的值,存储引擎存储A1000Q – 一开始在页上接着在相同的页面上从这个值的其他所有的发生的事指到这个值。这也可以说成有已经定义好的默认约束的一栏。页压缩只发生在页已经完全优化性能的时候。

 

虽然表面看来数据压缩会缩小你的表和索引,但是最好首先通过

 

sp_estimate_data_compression_savings系统存储程序或数据压缩Wizard工具在表或索引中评估预计的节省空间。你也可能检查现有数据是否成为碎片,因为你可能可以通过重建它而不是使用压缩来缩小索引。

评估存储节省空间

我们可以使用sp_estimate_data_compression_savings系统存储程序或者SQL Server 2008数据压缩Wizard工具去为索引中的一张表找出预计的存储节省空间。为了使用AdventureWorks数据库中的

sp_estimate_data_compression_savings系统存储程序,

 

 

  1. USE AdventureWorks   
  2. GO   
  3. EXEC sp_estimate_data_compression_savings 'Sales', 'SalesOrderDetail', NULL, NULL, 'ROW' ;   
  4. GO 

 

 

 

在这里,

 

l 第一个参数是模式名,

l 第二个参数是对象名,

l 第三个参数是索引id,

l 第四参数是分区id,

l 最后一个参数是压缩类型。

在以上的例子中,我会考虑在AdventureWorks数据库中的Sales.SalesOrderDetail表上的行压缩。执行这个查询会给你如下显示的结果: 

 

请注意栏size_with_current_compression_setting(KB)和

 

size_with_requested_compression_setting (KB),假设没有碎片,这两个栏会让你对在Sales.SalesOrderDetail表中实现节省空间有个估计。

要使用数据压缩Wizard工具,右键单击Sales.SalesOrderDetail表,选择存储并且单击管理压缩。 

 

这将在Welcome to Data Compression Wizard上启动SQL Server 2008数据压缩Wizard工具,点击下一步。

 

在选择压缩类型页面上,在压缩类型栏里点击下拉菜单,选择你的压缩类型选项。我将选择行,因为这是通过sp_estimate_data_compression_savings系统存储程序使用的选项。点击计算按扭来显示由存储程序提供的相似信息。

这两种方法将会让你获得通过压缩你的表和索引来获得存储节省空间的一个估计。

使压缩在表上可用

 

为了使压缩在现有的非分区表上可用,可以使用有REBUILD选项的ALTER TABLE命令。

 

  1. ALTER TABLE Sales.SalesOrderDetail  
  2. REBUILD WITH (DATA_COMPRESSION = ROW);  

 

上面的语句使行压缩在Sales.SalesOrderDetail表上可用。你也可以继续用数据压缩Wizard去使压缩在表上可用。在点击选择压缩类型页面上的计算按扭之后,点击下一步。在选择一个输出选项的页面上,你可以选择要么创建一个用于评论的脚本要么保存到一个文件中,立即运行或把它当作一个工作。

作为一个数据库管理员,你可能会把这个当作你的数据库日常维护的一部分,所以你可能也会为评论它而创建一个脚本,然后包括一个数据库维护工作。点击下一步按扭来继续。

在点击完成之前,审查SQL Server 2008数据压缩摘要页面。

你可能想要创建一个脚本,这个脚本通过使用sp_estimate_data_compression_savings系统存储程序来遍历所有的表,以此来产生摘要报告,而系统存储程序将会帮助你分析你会压缩哪些表或者索引。

【编辑推荐】

  1. SQL Server获取表的容量很简单!
  2. SQL Server排序遇到NULL,不怕不帕!
  3. SQL Server 2005两种快照隔离机制的不同之处
  4. SQL Server 2008 FileStream支持“真功夫版”
  5. SQL Server 2008稀疏列与列集的经验总结

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/285415.html<

(0)
管理的头像管理
上一篇2025-05-14 21:17
下一篇 2025-05-14 21:18

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注