一种经济有效的使用值压缩 DB2 for Linux,UNIX,and Windows 数据库

62 篇文章 0 订阅
27 篇文章 0 订阅
从 Version 8.1 开始,IBM® DB2® for Linux®, UNIX®, and Windows® 便具有一种称作值压缩的压缩特性。这种特性不是很出名,但是它提供了一种经济有效的方法,可以在几乎不影响性能的情况下缩小数据库的大小。在本文中,了解关于值压缩的背景信息,并学习一种基于脚本、能够轻松发现可从值压缩中受益的表的方法。

简介

从 DB2 8.1 开始,将数据存储到表中时,DB2 支持两种行格式。通过更改表属性 VALUE COMPRESSION,可以决定按照什么行格式存储新的表行。

如果使用属性 VALUE COMPRESSION 创建一个表,则对于变长类型的列(例如 VARCHAR 和 LOB),其中的每个表条目可以少占两个字节。对于其他数据类型,例如 CHAR、INTEGER 和 DECIMAL,每个表条目要多占两个字节。而且,如果使用值压缩,对于允许 NULL 值的所有列,其中的每个表条目可以少占一个字节。此外,值压缩的行格式会为每一行占用两个字节。因此,值压缩的行格式是否能产生正面的效果,取决于表的结构。

DB2, Version 9.1 中引入了行压缩特性。通过行压缩可以获得更好的压缩率,但是该特性需要单独的许可。此外,还必须清楚行压缩导致的附加的 CPU 开销。值压缩的 CPU 开销低于 1-2%,因此不易察觉。

使用值压缩行格式的压缩

可以使用下面 清单 1 中的 SQL 语句来确定,通过设置表属性 VALUE COMPRESSION,是否可以因使用值压缩的行格式而节省表的空间:

利用 SAP
SAP 使用 DB2 LUW 数据库抽象层中的这个简单的计算来确定,新创建的表是否可以直接从使用值压缩的行格式中受益。由于这一特性的引入,所有新创建的 SAP DB2 LUW 数据库都使用值压缩。这样可以使 SAP DB2 LUW 数据库精简大约 5%。

清单 1. 计算值压缩为单个表带来的好处
                
SELECT SUM(
(CASE TYPENAME
WHEN 'VARCHAR' THEN 2
WHEN 'LONG VARCHAR' THEN 2
WHEN 'VARGRAPHIC' THEN 2
WHEN 'LONG VARGRAPHIC' THEN 2
WHEN 'BLOB' THEN 2
WHEN 'CLOB' THEN 2
WHEN 'DBCLOB' THEN 2
WHEN 'XML' THEN 2
WHEN 'DATALINK' THEN 2
ELSE -2 END)
+(CASE NULLS
WHEN 'Y' THEN 1
ELSE 0 END)
)-2
FROM SYSCAT.COLUMNS
WHERE TABSCHEMA = <table schema>
AND TABNAME = <table name>

该语句返回使用值压缩行格式为每个表条目节省的字节数。 清单 1 中的计算描述了一条节省路径。对于这个计算,所有能返回正结果的表可以通过激活值压缩来节省空间。如果得到正的结果,则可以使用下面 清单 2 中的 SQL 语句为对应的表激活值压缩:

与行压缩的兼容性
值压缩可以与 DB2 9 行压缩特性一起使用。但是,将这两个特性结合起来使用并没有实际的好处。总体压缩率几乎是一样的。

清单 2. 激活值压缩
                
ALTER TABLE <table name> ACTIVATE VALUE COMPRESSION

必要时,可以使用下面 清单 3 中的 SQL 语句取消值压缩:


清单 3. 取消值压缩
 



本文转自IBM Developerworks中国

      请点击此处查看全文


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值