好的,所以这是圣诞节的一个星期,我必须诉诸度假主题。今年的事情有点回来。我们的家人已经采取了秘密圣诞老人的事情来减少树下的礼物数量,以便他们实际上适合树本身。时间很艰难,但也许这让我们在我们的优先事项中更明智。减少回收再利用。这也适用于数据存储。(公然的成绩segue ......)。让我们来看看…
现在数据存储持续很长一段时间,但这使我们陷入了虚假的安全感,使我们的磁盘卷为任何您可能想象的任何东西和所有可能想象的一切。如果我们可以减少我们使用的存储量,这不会很好,而无需支付差的表现?如果您曾经使用过Windows压缩(“压缩驱动器以节省空间”),您将完成一项心理票据,以便再次从未这样做!这是因为它是一种疏通的压缩策略。所有文件都被压缩以保存空间,但每次访问它们时都必须解压缩。这需要时间并在您观看机器严重“IO约束”时产生可怕的性能。不要在家尝试做这个。
SQL Server 2008数据压缩是一种智能压缩策略。它可以节省空间并通过较少的IO提供更好的性能。(顺便说一下,SQL Server 2008还包括备份压缩,这是一个完全独立的技术 - 我将讨论另一个时间。是的,这两种技术都可以一起使用)。
Microsoft使用SQL Server 2005 SP2开始了这条路,引入了vardecimal压缩。以前,无论其包含的数据如何,带有数据类型十进制(19,4)的列将始终占用固定的19个字节。将表选项“vardecimal存储格式”设置为“开”将根据存储在列中的数据值来减少存储。例如,值为4.00只需要5个字节的存储而不是19个字节。这在数据仓库中可能是重要的,并且在正确的方向上是一个很好的开始。此表选项现在默认为2008年“开启”。
2008年的数据压缩是不同的,但遵循类似的策略。有两个级别:“行压缩”和“页面压缩”。行压缩被视为轻量级压缩,每行被单独处理。在此模式下,所有列都被有效地存储为可变数据(即使是传统的固定长度列),以便基于每列中包含的数据进行优化空间。像领先的零和尾随空格一样,含义空间,零,零点根本没有空间。每个列有一个开销,但即使是为经典变量长度列的4位与2个字节最小化。在此模式下,Vardecimal选项也处于活动状态,保存更多空间。效果是需要更少的空间,数据页面较少,因此较少。没有正式的减压阶段,因为数据页面读入存储器。数据库引擎具有了解新数据格式的智能。
页面压缩包括行压缩的所有功能,但对压缩策略增加了一些重要智能。在此模式下,数据库引擎将在单个数据页面上查找多行的类似列值。两个页面压缩算法用于尝试保存空间:列 - 前缀和字典算法。列 - 前缀将在多行中查找通用的起始值到列中的列。如果找到此条件,那么前缀将仅存储一次以保存空间。如果算法无法保存空间,则它将无效。Dictionary算法在列前缀之后运行,并在列中查找重复值。如果找到,则该值可以由单个字节整数符号替换。最多256个值可以在每页中的字典中。同样,算法只会在数据页上保存NET空间时起作用。
一个简单的单词,没有压缩“脱行”LOB数据,因此使用许多大型对象数据列的应用程序,如SharePoint,可能无法受益于此类型的压缩。但是,在SQL通过西雅图峰会,Microsoft SQLCAT团队(sqlcat.com.)通过SQL Server 2008页面压缩,我们知道纳斯达克为其应用程序实现了40-60%的吞吐量。医疗保健行业的另一位客户只看到了1%的吞吐量,但实现了显着的节省空间。因为他们一直告诉我们:“你的里程可能会有所不同”。
好消息是,一旦在表上启用了压缩,所有智能都由SQL Server处理,您的应用程序代码不必更改,您可能会看到具有更好性能的立即节省空间。坏消息很熟悉:这是一个企业版功能,所以你必须支付它。但是,使用SQL Server 2008数据压缩,一名客户,ServiceU,估计它将节省25- $ 50K之间。
现在,这一消息甚至将使ebeneezer斯克罗吉幸福快乐。(与实际人或老板的任何相似之处纯粹巧合!)
节日快乐!
布莱恩
最近的帖子: