首页 > 数据库 >DB2 压缩并重组表

DB2 压缩并重组表

时间:2023-03-29 16:38:12浏览次数:52  
标签:-% 重组 LOGFILE AUTO 压缩 table DB2

大数据量的表应该进行压缩,不然会占用很大空间。

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

查看DB2库中占用空间大的前3张表:

SELECT * FROM SYSCAT.TABLES WHERE TABSCHEMA = 'schema' ORDER BY NPAGES DESC FETCH FIRST 3 ROWS ONLY

查看DB2表占磁盘空间大小

一、开启表的压缩功能:

  • 建表时指定压缩 create table tableName compress yes
  • 修改表启用压缩:ALTER TABLE tableName COMPRESS YES 执行速度很快,但是要达到压缩目的,还要进行reorg表

扫描表并创建对应的压缩字典,压缩数据(每个表都有自己的压缩字典,新插入的数据会被压缩)

通过查询 SYSCAT.TABLES 中的 COMPRESSION 列,可以确定表是否启用了行压缩以及它使用了哪种行格式。它可能的值如下所示:

  • R 表示使用了行压缩和标准行格式
  • V 表示使用了备用行格式,没有行压缩
  • B 表示使用了备用行格式和行压缩
  • N 表示没有使用行压缩,但使用了标准行格式

通过查询 SYSCAT.TABLES 中的 ROWCOMPMODE 列,可以确定表使用了哪种行压缩类型。它可能的值如下:

  • S 表示使用了经典行压缩
  • A 表示使用了自适应行压缩
  • 留空 表示未启用行压缩

还可以在Dbvisualizer中直接查看表是否启用压缩功能 COMPRESSION 这一选项是N表示表没有启用压缩; 如果是R表示表启用压缩。


二、执行实际的表重组(对已有的数据进行重组压缩):reorg table tableName resetdictionary 会执行很长时间,如果表里数据量较大的话 执行10个小时不在话下
所以直接在DB2服务器上 把命令放脚本里 在后台执行
用有dba权限的用户pusinst1执行 nohup /home/pusinst1/reorg_table.sh &

 1 vi reorg_table.sh
 2 #!/bin/bash
 3 
 4 #指定日志路径
 5 LOGFILE=/home/pusinst1/start.log
 6 
 7 echo `date +'%Y-%m-%d %H:%M:%S'`" 连接到数据库:" >> ${LOGFILE} 2>&1
 8 db2 connect to DCDWDMZC >> ${LOGFILE} 2>&1
 9 
10 echo `date +'%Y-%m-%d %H:%M:%S'`" 收集统计信息:" >> ${LOGFILE} 2>&1
11 db2 runstats on table TDW.SD_ORDERS >> ${LOGFILE} 2>&1
12 
13 echo `date +'%Y-%m-%d %H:%M:%S'`" 开始重组表 :" >> ${LOGFILE} 2>&1
14 db2 "reorg table TDW.SD_ORDERS resetdictionary"  >> ${LOGFILE} 2>&1
15 echo `date +'%Y-%m-%d %H:%M:%S'`" 重组表结束" >> ${LOGFILE} 2>&1

 

查看表压缩比:

SELECT TABNAME, CARD, NPAGES, COMPRESSION, AVGROWCOMPRESSIONRATIO, AVGROWSIZE, PCTPAGESSAVED FROM SYSCAT.TABLES WHERE TABSCHEMA='TDW' AND COMPRESSION='R' ORDER BY TABNAME

 


drop表、压缩重组表后;表空间释放了,但是不会释放磁盘空间,需要再进行降低DB2表空间高水位(HWM)操作
降低表空间高水位操作

另外 例如DB2 V10.5 可以修改数据库配置,开启自动重组;表就会处于一个自动维护的状态。存储空间支持在线释放,不影响系统的正常运行。

[db2inst1@localhost ~]$ db2 update db cfg using AUTO_REORG on
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.

 

       Database Configuration for Database 
       
 Automatic maintenance(自动维护)                  (AUTO_MAINT) = ON
   Automatic database backup(自动数据库备份)       (AUTO_DB_BACKUP) = OFF
   Automatic table maintenance(自动表维护)         (AUTO_TBL_MAINT) = ON
     Automatic runstats (自动 runstats)           (AUTO_RUNSTATS) = ON
       Real-time statistics(实时统计信息 )         (AUTO_STMT_STATS) = ON
       Statistical views(统计视图)              (AUTO_STATS_VIEWS) = OFF
       Automatic sampling (自动采样)            (AUTO_SAMPLING) = OFF
     Automatic reorganization(自动重组 )         (AUTO_REORG) = ON    

 

标签:-%,重组,LOGFILE,AUTO,压缩,table,DB2
From: https://www.cnblogs.com/ricehome/p/17269402.html

相关文章

  • IBM DB2 Catalog & Uncatalog
    DB2Catalog(中文翻译:编目)就是将远程的DBServer的信息“映射”到本地来,方便接下来的DB操作。DB2Catalog把远程的数据库信息加载到本地一般分为两步: 第一步,为远程DB编......
  • Linux常用命令——打包压缩命令tar
    tar:对文件进行打包、解包、压缩、解压语法:tar[-zcxvf]fileName[files]包文件后缀为.tar表示只是完成了打包,并没有压缩包文件后缀为.tar.gz表示打包的同时还进行了压......
  • vue图片上传前压缩图片
    前言需求:项目当中上传图片的需求点肯定有很多,再上传之后,如果图片很大的话,在加载的时候就会很慢。最近发现系统首次加载越来越慢,就开始思考怎么能降低这个加载时间,由于首页......
  • 第三篇 计算机网络基础 - Http协议【 http报文 + http状态码 + http压缩协议 】
    http报文HTTP报文:用于HTTP协议交互的信息被称为HTTP报文1、请求【Request】端的报文叫请求报文2、响应【response】端的报文叫响应报文htt......
  • DB2重启数据库实例
    DB2重启数据库实例时,有时停止实例会失败,此时需要先确认没有应用链接数据库,然后再关闭数据库实例,并重新启动。1.查看是否有活动的链接命令:db2listapplicati......
  • JavaScript 压缩 加密 解密
     代码: <!DOCTYPEHTMLPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.or......
  • Linux基础第二章文件压缩归档及文本编辑和vi编辑器
    一、文件压缩及归档1、文件压缩gzip和bzip命令用于文件压缩,但是缺陷是压缩完成后源文件消失所以一般不用。命令格式是:gzip或者bzip +0-9的压缩等级(数字越大压缩级别......
  • oracle 表空间压缩
    SELECT--B.file_name"文件名",A.TABLESPACE_NAME"表空间名",TOTAL"表空间大小",FREE"表空间剩余大小",(TOTAL-FREE)"表空间使用大小",......
  • Linux环境下如何解压jar包,压缩jar包文件
    1.解压jar包文件里面的文件jarxvfjarxvftest.jarBOOT-INF/classes/com/hsc/test/MyTest.class解释说明:解压test.jar包里面的MyTest.class文件到当前目录下解压后我们......
  • Python离线库压缩文件怎么安装tar.gz文件?
    在使用pip安装python库的时候,大部分情况下都是通过命令来在线安装的。但是在网络不好或者是库比较特殊的情况下就要去下载python库压缩文件来手动安装了。而tar.gz就是pyth......