SQL Server 2008企业版和开发版引入了表、索引和相应分区的行级和页级压缩。
行压缩为数值数据类型(例如,int、bigint和decimal)和固定长度类型(比如money和datetime)使用可变长度的存储。行压缩也为定长字符串使用可变长度存储格式,且不存储尾部的空字符、NULL和0值。
页压缩包含行压缩,以及前缀压缩和字典压缩。
前缀压缩包括在行的列中存储多次的列前缀值的存储,并引用单个的值替换掉多余的前缀。
字典压缩发生在前缀压缩后,首先查找数据页上任意位置的重复数据值(不只是前缀),然后使用指向单个值的指针替换多余的重复值。
使用CREATE TABLE和ALTER TABLE来启用行压缩与页压缩。在第一个示例中,将为新表启用行压缩。指定DATA_COMPRESSION表选项并从NONE、ROW或PAGE中选择其一来完成它。
USE AdventureWorks
GO
CREATE TABLE dbo.ArchiveJobPosting
(
JobPostingID int NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
CandidateID int NOT NULL,
JobDESC char(2000) NOT NULL
)
WITH (DATA_COMPRESSION=ROW)
执行ALTER TABLE...REBUILD WITH来重新配置既有表的压缩选项。例如,如下命令关闭刚刚创建的表的压缩选项:
ALTER TABLE dbo.ArchiveJobPosting
REBUILD WITH
(DATA_COMPRESSION=NONE)
下一步,将向表中添加垃圾数据,演示压缩带来