关于SQL Server 2005 SP2中提供的Vardecimal存储格式
这个新的存储格式的主要目的是将decimalh和numberic的长度可变长。这样就可以节省一些存储空间。关于它的一些介绍,可以参考微软官方的文档
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/html/b4a37f9c-3b71-43bd-b64e-2bfb5c5817ba.htm
decimal 和 numeric 数据类型在磁盘上通常存储为固定长度数据。numeric 数据类型的功能等效于 decimal 数据类型。在 SQL Server 2005 Service Pack 2 (SP2) 和更高版本中,可以使用 vardecimal 存储格式将 decimal 和 numeric 数据类型存储为可变长度列。vardecimal 存储格式仅在 SQL Server 2005 Enterprise Edition、Developer Edition 和 Evaluation Edition 中可用。
Vardecimal 是一种存储格式,而不是数据类型。
vardecimal 存储格式可以大大减少数据的存储大小,但确实增加了少量 CPU 开销。vardecimal 存储格式应用于表级别。也就是说,不能只将表中的某些 decimal 列存储为 vardecimal 存储格式而不将其他列存储为该格式。decimal 数据将保持为本身的数据类型。
对表启用 vardecimal 存储格式时,将采用 vardecimal 存储格式将 decimal 数据存储在数据、索引和日志页中。更改存储格式的操作是离线进行的。要修改的表在操作过程中以独占方式锁定,因而无法进行并发读写访问。
怎么样来理解这个问题呢?
例如某个字段的类型是decimal,然后精度设置为了28.那么,在传统的情况下,不管真正存储的值得精度是多少,那么都将占用13个字节。但是在vardecimal这种存储格式下,如果精度更小一些,则可以使用更少的字节数。
有关启用或者禁用vardecimal的一些脚本,请参考这里