--------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 42? ? ? 0? ? ? ? ? INIT? ? ? ? 100.00? ? ? ? Table? ? ? ? ? ? RowsNum? ? ? RowsComm? ? Status? ? ? Progress (%)?
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 42? ? ? 0? ? ? ? ? INIT? ? ? 100.00? ? ? ? Table? ? ? ? ? ? RowsNum? ? ? RowsComm? ? ? Status? ? Progress(%)?
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 42? ? ? ? 0? ? ? ? ? COPY? ? ? ? 0.00? ? ? ? ? Table? ? ? ? RowsNum? ? ? RowsComm? ? ? Status? ? Progress(%)?
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? 42? ? ? ? ? 0? ? ? COPY? ? ? 0.00? ? ? ? ? Table? ? ? ? ? RowsNum? ? ? RowsComm? ? ? ? Status? ? Progress(%)?
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 42? ? ? ? ? 0? ? ? ? COPY? ? 0.00? ? ? ? ?
Table? ? ? ? ? RowsNum? ? ? ? RowsComm? ? Status? ? Progress(%)?
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? 42? ? ? ? ? 0? ? ? COPY? ? 100.00? ? ? ?
Table? ? ? ? ? ? RowsNum? ? ? ? RowsComm? ? Status? ? Progress(%)?
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 42? ? ? ? 0? ? ? ? COPY? ? ? 100.00? ? ? ? Table? ? ? ? ? RowsNum? ? ? ? ? RowsComm? ? Status? Progress (%)?
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 0? ? ? ? 0? ? ? ? REPLAY? ? 100.00? ? ? ?
Table? ? ? ? ? ? RowsNum? ? ? ? RowsComm? ? Status? ? Progress (%)
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 0? ? ? ? 0? ? ? ? REPLAY? ? 100.00
Table? ? ? ? ? ? RowsNum? ? ? ? RowsComm? ? Status? ? Progress(%)
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 0? ? ? ? 0? ? ? SWAP? ? ? ? 0.00
Table? ? ? ? ? ? RowsNum? ? ? ? RowsComm? ? ? Status? ? Progress(%)
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? 0? ? ? ? 0? ? ? SWAP? ? ? 100.00
Final Summary:
Table? ? ? ? ? RowsNum? ? ? ? InitSize(MB)? FinalSize (MB)? CompRate (%)? ? State
--------------------------------------- --------------- ---------------
"DB2INST2"."EMPLOYEE"? ? ? ? ? ? ? ? ? 42? ? ? ? ? ? 0.50? ? ? ? ? 10.25? ? ? ? ? -1950.00? ? ? ? Completed
Pre-Conversion Size (MB): 0.50
Post-Conversion Size (MB): 10.25
Compression Rate (Percent): -1950.00
SQL2446I? The db2convert command completed successfully.? Allrow-organized tables that satisfy the specified matching criteria have beenconverted to column-organized tables.
可以看到db2convert整个过程其实是基于admin_move_table的原理实现,整个过程也是对表在线做的类型转换。另外注意的是,范围分区表,MDC表和ITC表默认是不能被转换成列式组织表的,需要在上面的命令中使用-force选项才可以执行该命令进行转换。在转换前表存在的依赖对象最好能够删掉,外键约束会影响转换的时间,最重要的一点就是表的类型转换操作在线是不可逆的,所以建议最好在转换成列式组织表前对相关表或者对转换库做完整的备份。
db2convert -d sample
可以将数据库sample中所有的行式组织表转换成列式组织表。
重组列式组织表
在日常维护和使用列式组织表也需要定期对数据量增删操作比较频繁的表进行重组,以便于提高运程序的查询的执行性能,当然如果启用了auto_reorg参数,数据库会自动对相关列组织表进行重组操作,如果手动重组列组织表只需要在reorg table命令后面加上RECLAIM EXTENTS选项即可,如下演示了列式表的重组操作:
[db2inst1@dblab test]$ db2 reorgtable db2inst2.employee RECLAIM EXTENTS
DB20000I? The REORG command completedsuccessfully.
如果不加该选项的手动重组的话,对于列式组织表的重组会有如下报错信息:
[db2inst1@dblab test]$ db2 reorgtable db2inst2.employee
SQL2216N? SQL error "-1667"occurred while reorganizing a database table or its indexes.
解释执行计划
列式组织表的统计信息收集方法与普通的行式组织表相同,在此就