ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DB2 V9表压缩(四)

DB2 V9表压缩(四)

原创 Linux操作系统 作者:rheet1978 时间:2008-11-17 21:15:37 0 删除 编辑
对表启用空值、系统缺省值压缩

除了数据行压缩以外,以前的空值压缩在DB2 V9中继续可以使用。创建表时,可使用可选 VALUE COMRESSION 子句来指定表在使用表级别也可能是列级别的节省空间的行格式。使用 VALUE COMRESSION 时,不会将已指定给已定义的变长数据类型(VARCHAR、VARGRAPHICS、LONG VARCHAR、LONG VARGRAPHIC、BLOB、CLOB 和 DBCLOB)的 NULL 和零长度数据存储在磁盘上。只有与这些数据类型相关联的开销值才会占用磁盘空间。如果使用了VALUE COMRESSION,那么还可以使用可选 COMPRSS SYSTEM DEFAULT 选项来进一步减少磁盘空间的使用量。如果插入的或更新的值等于列的数据类型的系统缺省值,那么使用的磁盘空间最少。缺省值将不会存储在磁盘上。支持COMPRSS SYSTEM DEFAULT的数据类型包括所有数字类型列、定长字符和定长图形字符串数据类型。这表示零和空格可以压缩。要确定是否应考虑对表进行空间压缩,应了解大多数值等于系统缺省值或 NULL 值的表将受益于新的行格式。例如,假设有一个 INTEGER 列且列的 90% 的列值为 0 (INTEGER数据类型的缺省值)或 NULL,压缩此表和此列将受益于新的行格式并节省大量的磁盘空间。

下面我们创建示例表TEST3,其使用VALUE COMRESSION对整个表的空值进行压缩,对每个列使用COMPRESS SYSTEM DEFAULT选项对数据类型默认的系统缺省值进行压缩。

在DB2CLP窗口连上示例数据库,发出CREATE TABLE命令创建示例表TEST3,并插入部分数据,具体如清单22所示:

- -清单22 .创建示例表TEST3

C:\> db2 connect to db2test1

   数据库连接信息

 数据库服务器         = DB2 / NT 9.1.0

 SQL 授权标识         = RHETTE

 本地数据库别名       = DB2TEST1

C:\> DB2 CREATE TABLE TEST3 ( ID INTEGER  COMPRESS SYSTEM DEFAULT , NAME VARCHAR ( 10 ) COMPRESS SYSTEM DEFAULT , NOTE VARCHAR ( 100 )  COMPRESS SYSTEM DEFAULT ) IN TABLESPACE1 VALUE COMPRESSION

DB20000I  SQL命令成功完成。

C:\> db2 insert into test3 ( id , name ) values ( 0 , ' aa ')

DB20000I  SQL命令成功完成。

C:\> db2 insert into test3 ( id , name ) values ( 1 , ' bb ')

DB20000I  SQL命令成功完成。

 

命令成功完成,这样我们就创建了示例表TEST3,其使用空值和默认值压缩。

COMPRESS SYSTEM DEFAULT指定对系统默认值存储时使用最小空间,如果VALUE COMRESSION子句没有被指定,将返回一个警告SQLSTATE01648,并且系统默认值也不会在压缩存储。允许系统默认值压缩将对INSERT和UPDATE操作额外增加一些性能开支,因为需要额外检查是否需要默认值压缩。COMPRESS SYSTEM DEFAULT子句不支持DATE,TIME,TIMESTAMP,XML或者结构化数据类型,否则会报SQLSTATE 42842错误。如果基本数据类型是变长字符串,则本语句将自动忽略。

可以使用 DEACTIVATE VALUE COMPRESSION 来指定表将不再对表中数据使用节省空间技术。如果使用DEACTIVATE VALUE COMPRESSION,这将显式禁用与该表中的列相关联的所有 COMPRESS SYSTEM DEFAULT 选项。

下面我们对示例表TEST3的ID列禁用系统默认值压缩,在DB2CLP窗口中,发出带COMPRESS OFF选项的ALTER TABLE命令,具体如清单23所示:

- -清单23 .对示例表TEST3一个列禁用系统默认值压缩

C:\> DB2 ALTER TABLE TEST3 ALTER COLUMN ID COMPRESS OFF

DB20000I  SQL命令成功完成。

 

下面我们对示例表TEST3使用 DEACTIVATE VALUE COMPRESSION 来指定表将不再对表中数据使用节省空间技术,其各个列上的COMPRESS SYSTEM DEFAULT也将同时禁用。

在DB2CLP窗口中发出DEACTIVATE VALUE COMPRESSION命令,具体如清单24所示:

- -清单24 .对示例表TEST3禁用空间节省技术

C:\> DB2 ALTER TABLE TEST3  DEACTIVATE VALUE COMPRESSION

DB20000I  SQL命令成功完成。

 

如果想对没有启用空值压缩的旧表启用空值压缩,可以是带ACTIVATE VALUE COMPRESSION选项的ALTER TABLE命令显式地启用空值压缩,比如我们对示例表TEST3还想启用空值压缩,可以在DB2CLP窗口中发出ALTER TABLE命令,具体如清单25所示:

- - 清单25 .对示例表TEST3启用空值压缩

C:\> DB2 ALTER TABLE test3 ACTIVATE VALUE COMPRESSION

DB20000I  SQL命令成功完成。

 

      如果对某个列想启用系统默认值压缩,可以在DB2CLP窗口中发出ALTER TABLE命令,具体如清单26所示:

- - 清单26 .对示例表TEST3启用系统默认值压缩

C:\> DB2 ALTER TABLE test3 ALTER id COMPRESS SYSTEM DEFAULT

DB20000I  SQL命令成功完成。

 

 

参考资料

学习


获得产品和技术


讨论

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9524210/viewspace-496184/,如需转载,请注明出处,否则将追究法律责任。

上一篇: DB2 V9表压缩(三)
请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2008-06-09

  • 博文量
    84
  • 访问量
    529476