在IBM Db2中,启用表压缩并不立即压缩现有数据,只是为新插入的数据启用压缩。为了压缩已经存在的数据,你需要重新组织(REORG)表。这就是为什么在执行 ALTER TABLE tableName COMPRESS YES
后,还需要执行 REORG
命令。
理解 ALTER TABLE ... COMPRESS YES
当你运行以下命令时:
ALTER TABLE tableName COMPRESS YES;
这只是启用了压缩功能,对现有数据没有影响。新插入的数据会被压缩,但现有的数据不会自动压缩。
需要 REORG
表
要压缩现有的数据,需要执行 REORG
命令。REORG
命令重新组织表中的数据,并在此过程中对现有数据进行压缩。这个过程会对表进行整理和重新排列,使得数据存储更加紧凑和高效。
REORG TABLE tableName;
为什么需要 REORG
- 现有数据未压缩:启用压缩后,只有新数据会被压缩。现有数据保持原样。
- 性能优化:通过重新组织表,可以改善查询性能和磁盘空间使用情况,因为数据变得更加紧凑。
- 索引重建:在重新组织过程中,索引也会被重建,这有助于保持索引的有效性和性能。
示例步骤
-
启用压缩:
ALTER TABLE tableName COMPRESS YES;
-
重新组织表:
REORG TABLE tableName;
完整示例
假设你有一个表 EMPLOYEES
,你想启用压缩并压缩现有数据。
-
启用压缩:
ALTER TABLE EMPLOYEES COMPRESS YES;
-
重新组织表:
REORG TABLE EMPLOYEES;
执行这些步骤后,EMPLOYEES
表中的现有数据将被压缩,并且将来插入的数据也会自动压缩。
总结
ALTER TABLE ... COMPRESS YES
:启用压缩功能,但不影响现有数据。REORG TABLE
:重新组织表,对现有数据进行压缩,并优化表结构。
通过这两个步骤,可以确保表中所有数据(现有和新插入的)都被压缩,优化磁盘空间使用和查询性能。