DB2表压缩功能

 
实际上DB2表压缩的方法是通过查看整个表,找到重复的字符和字符串后,将那些字符和字符串存储在一个压缩字典中,然后用一个存储在字典中对应数据字符串的替代符号来替代表中的实际数据,从而达到了压缩数据的目的。一个压缩属性的表,肯定有他所对应的压缩字典。

开启表的压缩功能:

create table tableName compress yes 或 alter table tableName compress yes

扫描表并创建对应的压缩字典,并执行实际的表重组,从而压缩数据(表中需要有数据,不能是空表,每个表都有自己的压缩字典,新插入的数据也会继续被压缩):注意此时REORG使用的是RESETDICTIONARY选项

reorg table tableName resetdictionary 

对于压缩后的表,如果想进行一次表重组,而不是重建数据字典,那么:注意此时REORG使用的是KEEPDICTIONARY选项

reorg table tableName keepdictionary

在压缩前,我们通常想先评估一下表压缩后能节省多少空间可以利用db2 inspect和db2inspf命令来实现:

通过INSPECT ROWCOMPESTIMATE语句进行评估分析。记住,这个命令只是估计压缩的效果,而不是查看最终实际的压缩效果,如果想查看实际的压缩效果,需要查看系统表SYSIBM.SYSTABLES。带压缩估计选项(ROWCOMPESTIMATE)的INSPECT命令,将生成一份报告,描述节省了多少页。语法如下:
DB2 INSPECT ROWCOMPESTIMATE TABLE NAME table_name RESULTS KEEP file_name 
    由于INSPECT命令生成的文件是二进制的,无法直接查看,所以我们需要使用DB2INSPF命令将此文件格式转成可读模式才能查看,具体语法如下:
DB2INSPF file_name output_file_name

最后打开文件output_file_name就可以看到压缩比例了

结果实例如下:

- - 清单12 .查看示例表TEST1,看一下表压缩方式节省了多少空间
DATABASE
: DB2TEST1
VERSION : SQL09010
2007-10-25-21.14.03.500000

操作:ROWCOMPESTIMATE
TABLE
模式名:RHETTE
表名:TEST1
表空间标识:
3 对象标识:4
结果文件名:test1.resp
表阶段开始(有符号的标识:
4,无符号的:4;表空间标识:3):RHETTE.TEST1
数据阶段开始
。对象:4 表空间:3

行压缩估计结果:
通过压缩而节省的页数所占的百分比:
56
通过压缩而节省的字节数所占的百分比:
56
由于行大小太小而不适合压缩的行数所占的百分比:
0
压缩字典大小:
8192 个字节。
扩充字典大小:
3336 个字节&#65377
;
数据阶段结束
&#65377
;
表阶段结束
&#65377
;
处理已完成
。2007-10-25-21.14.03.562000

 

如果我们对压缩结果不满意,现在想对示例表TEST1进行解压缩,可以发出ALTER TABLE命令,把示例表TEST1的COMPRESS属性设置为NO,再运行REORG命令执行脱机重组,具体如下:

db2 alter table tablenam compress no;

db2 reorg table tablenam resetdictionary;

 

 除了数据行压缩以外,以前的空值压缩在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 值的表将受益于新的行格式

(关闭开启)空值压缩 db2 alter table tablenam (de)activate value compress

(关闭开启)系统默认压缩 db2 alter table tablenam (de)activate compress system default

或者在定义的表格的时候:db2 create table tablenam value compress

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

实际上DB2表压缩的方法是通过查看整个表,找到重复的字符和字符串后,将那些字符和字符串存储在一个压缩字典中,然后用一个存储在字典中对应数据字符串的替代符号来替代表中的实际数据,从而达到了压缩数据的目的。一个压缩属性的表,肯定有他所对应的压缩字典。
实际上DB2表压缩的方法是通过查看整个表,找到重复的字符和字符串后,将那些字符和字符串存储在一个压缩字典中,然后用一个存储在字典中对应数据字符串的替代符号来替代表中的实际数据,从而达到了压缩数据的目的。一个压缩属性的表,肯定有他所对应的压缩字典。

开启表的压缩功能:

Sql代码 复制代码  收藏代码
  1. create table tableName compress yes 或 alter table tableName compress yes  
create table tableName compress yes 或 alter table tableName compress yes

 

扫描表并创建对应的压缩字典,并执行实际的表重组,从而压缩数据(每个表都有自己的压缩字典,新插入的数据也会继续被压缩):

Sql代码 复制代码  收藏代码
  1. reorg table tableName resetdictionary  
reorg table tableName resetdictionary

 

对于压缩后的表,如果想进行一次表重组,而不是重建数据字典,那么:

Sql代码 复制代码  收藏代码
  1. reorg table tableName keepdictionary  
reorg table tableName keepdictionary

 

在压缩前,我们通常想先评估一下表压缩后能节省多少空间可以利用db2 inspect和db2inspf命令来实现:

Sql代码 复制代码  收藏代码
  1. db2 inspect rowcompestimate table name tbname results keep tbfile   
  2.   
  3. db2inspf tbfile alantab_output_RESULTFILE  
db2 inspect rowcompestimate table name tbname results keep tbfile

db2inspf tbfile alantab_output_RESULTFILE

 

 

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DB2数据库中的空间是用来存储数据和索引的逻辑存储单元。当空间中的数据过多或者不再需要时,需要进行清理以释放空间和提升数据库性能。 空间的清理一般分为以下几个步骤: 1. 分析空间:首先需要对数据库中的空间进行分析,了解每个空间的大小、使用率以及存储的数据类型等信息。通过这样的分析可以确定哪些空间需要清理,以及清理的优先级。 2. 数据迁移:在清理空间之前,需要先将空间中的数据迁移至其他地方,可以是其他空间或者其他存储介质。在数据迁移过程中需要保证数据的完整性和一致性,可以通过数据库自带的工具或者自行编写脚本来实现数据迁移。 3. 清空空间:当数据迁移完成后,可以对需要清理的空间进行清空操作。清空操作包括删除不再需要的数据、重建索引、释放未使用空间等一系列操作,可以通过数据库自带的工具或者编写脚本来实现。 4. 重建空间:在清空完成后,可以根据实际需求来重新设计和构建空间的结构,包括调整空间的大小、重新分布数据、优化索引等操作。通过这样的重建可以提升空间的性能和使用效率。 5. 监控和维护:在清理完成后,需要对空间进行监控和维护,定期检查空间的使用情况,及时清理不再需要的数据,以保证数据库的性能和稳定性。 总之,空间的清理是数据库管理中的重要工作,通过合理的清理和维护可以提升数据库的性能和稳定性,减少不必要的资源浪费。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值