知识大全 SQLServer2008中的数据压缩功能

Posted

篇首语:书史足自悦,安用勤与劬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQLServer2008中的数据压缩功能相关的知识,希望对你有一定的参考价值。

SQLServer2008中的数据压缩功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  SQL Server SP 为我们带来了vardecimal功能 这项功能使得原来定长的decimal数据在数据文件中以可变长的格式存储 据称这项功能可以为典型的数据仓库节省 %的空间 而SQL Server 在这一基础上又进一步增强了数据压缩功能 SQL Server 现在支持行压缩和页面压缩两种选项 数据压缩选项可以在以下对象上启用

  未创建聚簇索引的表

  创建聚簇索引的表

  非聚簇索引(对表设置压缩选项不会影响到该表上的非聚簇索引 因此聚簇索引的压缩需要单独设置)

  索引视图

  分区表和分区索引中的单个分区

  为什么需要数据压缩

  首先可能需要讨论的问题就是为什么在存储成本不断降低的今天 微软还要煞费苦心地在SQL Server中实现并且不断改进数据压缩技术呢?

  尽管存储成本已经不再是传统意义上的首要考虑因素 但是这并不代表数据库尺寸不是一个问题 因为数据库尺寸除了会影响到存储成本之外 还极大地关联到管理成本和性能问题

  首先我们来讨论为什么会有管理成本的问题?因为数据库需要备份 数据库的尺寸越大 那么备份时间就会越长 当然另外一点就是消耗的备份硬件成本也会随之提高(包括需要的备份介质成本和为了满足备份窗口而需要更高级的备份设备带来的采购成本) 还有一种管理成本就是数据库的维护成本 例如我们经常需要完成的DBCC任务 数据库尺寸越大 我们就需要更多的时间来完成这些任务

  接着我们再看看性能问题 SQL Server在扫描磁盘读取数据的时候都是按照数据页为单位进行读取的 因此如果一张数据页中包含的数据行数越多 SQL Server在一次数据页IO中获得的数据就会越多 这样也就带来了性能的提升

  最后考虑存储的成本 按照原先SQL Server SP 中vardecimal的压缩数据为例 %的空间节省也就意味着 %的存储成本 而按照SQL Server 当前放出的测试数据 采用新的数据压缩技术可以达到 X X的存储率 再加上如果企业要考虑容灾而增加的存储空间 这样节省的存储硬件成本也将是想当可观的

  如何使用数据压缩

  SQL Server 中的压缩选项可以在创建表或索引时通过Option进行设置 例如          CREATE TABLE TestTable (col int col varchar( )) WITH (DATA_PRESSION = ROW);

  如果需要改变一个分区的压缩选项 则可以用以下语句          ALTER TABLE TestTable REBUILD PARTITION = WITH (DATA PRESSION = PAGE);

  如果需要为分区表的各个分区设置不同的压缩选项 可以使用以下的语句 (SQL Server 可以对不同的分区使用不同的压缩选项 这一点对于数据仓库应用是非常重要的 因为数据仓库的事实表通常都会有一个或数个热分区 这些分区中的数据经常需要更新 为了避免数据压缩给这些分区上的数据更新带来额外的处理载荷 可以对这些分区关闭压缩选项)          CREATE TABLE PartitionedTable (col int col varchar( ))        ON PS (col )        WITH (        DATA_PRESSION = ROW ON PARTITIONS( )         DATA_PRESSION = PAGE ON PARTITION( TO ));

  如果是为某个索引设置压缩选项的话 可以使用

            CREATE INDEX IX_TestTable_Col ON TestTable (Col ) WITH (DATA_PRESSION = ROW);

  如果是修改某个索引的压缩选项 可以使用          ALTER INDEX IX_TestTable_Col ON TestTable REBUILD WITH (DATA_PRESSION = ROW);

  SQL Server 同时还提供了一个名为sp_estimate_data_pression_savings存储过程帮助DBA估计激活压缩选项后对象尺寸

  数据压缩是怎样工作的

  对于行压缩 SQL Server 采用以下三种方法来节省存储空间

  减少了与记录相关联的元数据开销 此元数据为有关列 列长度和偏移量的信息 在某些情况下 元数据开销可能大于旧的存储格式

  它对于数值类型(例如 integer decimal和float)和基于数值的类型(例如 datetime和money)使用可变长度存储格式

  它通过使用不存储空字符的可变长度格式来存储定长字符串

  对于页面压缩 SQL Server 则是在一张数据页面上依次采用

  行压缩

  前缀压缩

  字典压缩

  配置数据压缩功能需要注意的

  尽管SQL Server 的数据压缩功能非常有价值 但是仍然需要注意一些问题

  数据压缩功能仅在企业版和开发版中可用

  数据压缩可以让一张数据页存储更多的数据行 但是并不能改变单行数据最长 字节这一限制

  在一张已经设置了数据压缩的表上创建聚簇索引时 聚簇索引默认继承原表上的压缩选项

  在未设置聚簇索引的表上设置页面压缩时 只有以下情况才会获得页面压缩的实际效果

  数据使用BULK INSERT语法添加到表中

  数据使用INSERT INTO WITH (TABLOCK)语法添加到表中

  执行带有页面压缩选项的ALTER TABLE REBUILD命令

  在未设置聚簇索引的表上更改压缩选项 会导致该表上所有非聚簇索引都需要重建 因为这些非聚簇索引指向的数据行地址已经都发生了改变

  在改变压缩选项时所需要的临时空间大小与创建索引是所需要的空间是一样的 因此对于分区表 我们可以逐个分区设置压缩选项来减少临时空间的需求压力

  由于SQL Server 中数据压缩技术其实是SQL Server SP 中vardecimal技术的一个超集 因此设置了数据压缩后就没有必要保留vardecimal了 当然SQL Server 为了保持向后兼容性 在当前版本中仍然保留了vardecimal 但是SQL Server 的下一个版本及可能就会弃用vardecimal选项 因此做了这些设置的数据库应该尽早改变到数据压缩设置下

cha138/Article/program/Oracle/201311/17483

相关参考

知识大全 SQL Server 2008空间数据初探[2]

数据库工程师:SQLServer2008空间数据初探[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 SQL Server 2008空间数据初探[1]

数据库工程师:SQLServer2008空间数据初探[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 用SQL Storage Compress压缩SQL Server数据库文件

用SQLStorageCompress压缩SQLServer数据库文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 SQL Server 2008数据挖掘查询任务

SQLServer2008数据挖掘查询任务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据挖

知识大全 SQL Server 2008清空数据库日志方法

SQLServer2008清空数据库日志方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用

知识大全 SQL Server 2008 数据库镜像部署实例之一 数据库准备

SQLServer2008数据库镜像部署实例之一数据库准备  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 开启SQL Server 2008 R2数据管理新纪元

开启SQLServer2008R2数据管理新纪元  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 解决SQL SERVER 2008数据库表中修改字段后不能保存

解决SQLSERVER2008数据库表中修改字段后不能保存  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 SQL Server 2008远程链接时SQL数据库不成功怎么办

SQLServer2008远程链接时SQL数据库不成功怎么办  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 数据库移植到SQL Server 2008R2出现“3145错误”怎么办

数据库移植到SQLServer2008R2出现“3145错误”怎么办  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快