当我更改db2中的表时,我必须重新组织它,以便执行下一个查询:
Call Sysproc.admin_cmd ('reorg Table myTable');
我正在寻找适当的解决方案来在更改表时重新组织表,或者在进行各种修改后重新组织所有模式
当我更改db2中的表时,我必须重新组织它,以便执行下一个查询:
Call Sysproc.admin_cmd ('reorg Table myTable');
我正在寻找适当的解决方案来在更改表时重新组织表,或者在进行各种修改后重新组织所有模式
REORG
您可以通过查看以下内容来确定表格何时需要SYSIBMADM.ADMINTABINFO
:
select tabschema, tabname
from sysibmadm.admintabinfo
where reorg_pending = 'Y'
您可能还想查看该NUM_REORG_REC_ALTERS
列,因为这可能会向您显示由于各种语句而不需要重组的其他表。ALTER TABLE
重组操作类似于硬盘中的碎片整理。它释放页面中的空白空间,最终它可以根据索引重新组织数据。根据功能,它创建压缩字典并压缩数据。
如您所见,重组操作是一项管理任务,并不是每次修改数据都需要。数据库可以在没有重组的情况下运行。
为了解决这个问题,DB2 包含了自动备份等自主功能,但这并不能回答您自己的问题。这只会在需要的表上触发重组。
在 db2 配置中,我们有:
自动重组 (AUTO_REORG) = OFF
我们可以将 auto_reorg 设置为 on