数据库维护全攻略:压缩、索引与DBCC命令详解
1. 数据压缩技术
1.1 行压缩(Row Compression)
行压缩通过将所有固定长度的数据类型(包括数字数据类型)存储为可变长度来减少磁盘空间。这样可以减小每一行的大小,使每页能容纳更多行。行压缩使用压缩元数据来描述行内每个值的偏移量。
不过,并非总能实现空间节省。例如,当固定长度数据类型列中存储的值占用了列的全部长度时,就无法节省空间。实际上,在这种情况下,由于仍需将压缩元数据写入页面,会使用更多空间。
行压缩对一些最小的数据类型(如tinyint、smalldatetime、date和uniqueidentifier)没有影响,对已经以可变长度存储的数据类型(如varchar、nvarchar和varbinary)也没有影响。特殊数据类型(如text、image、xml、table、sql_variant和cursor)不受行级压缩影响。bit数据类型总是受到负面影响,因为加上元数据开销,它需要4位存储空间,而通常最多8位的列只需要1字节。
1.2 页压缩(Page Compression)
页压缩对每个数据页应用以下压缩技术:
- 行压缩
- 前缀压缩(Prefix Compression)
- 字典压缩(Dictionary Compression)
当数据页满时,这些技术会按顺序应用。这就是为什么页压缩对写入性能有很大负面影响。页压缩在节省空间方面比行压缩更进一步。启用页压缩时,行压缩会自动启用。
前缀压缩会识别每列中的重复值,并将重复值存储一次到页面头部的压缩信息(CI)结构
超级会员免费看
订阅专栏 解锁全文
2069

被折叠的 条评论
为什么被折叠?



