db2 luw 重组表

问题描述 投票:0回答:1

我的疑问涉及如何准确确定何时需要重组表。

我的应用程序执行以下选择:

SELECT TABNAME FROM SYSIBMADM.ADMINTABINFO WHERE TABSCHEMA = 'DB2ADMIN' AND REORG_PENDING = 'Y'

现在我找到了IBM的以下文章:

IBM 文档

他们建议使用:

SELECT TABSCHEMA, TABNAME, NUM_REORG_REC_ALTERS, REORG_PENDING FROM SYSIBMADM.ADMINTABINFO where tabname='TAB1'

因此,从“SYSIBMADM.ADMINTABINFO”中,他们还考虑列“NUM_REORG_REC_ALTERS”

文章中报道:

某些“ALTER TABLE”语句被视为“REORG 建议”操作。经过 3 次此类操作后,您的表将被迫进入重组挂起状态。允许对已进行“REORG 建议”操作的表进行有限访问,因此,您可能需要知道到目前为止已完成了多少操作。经过三个这样的操作后,在执行 REORG 之前不允许访问该表。

我还找到了列NUM_REORG_REC_ALTERS

的文档

但是,我仍然不清楚是否有要重组的表的列表就足够了:

SELECT TABNAME FROM SYSIBMADM.ADMINTABINFO WHERE TABSCHEMA = 'DB2ADMIN' AND REORG_PENDING = 'Y'

或者更可取:

SELECT TABNAME FROM SYSIBMADM.ADMINTABINFO WHERE TABSCHEMA = 'DB2ADMIN' AND (REORG_PENDING = 'Y' OR NUM_REORG_REC_ALTERS > 0) 

您对此有何看法?

谢谢你。

db2 reorganize
1个回答
0
投票

表重组的必要性必须由该表访问模式决定。

REORG_PENDING = 'Y' AND NUM_REORG_REC_ALTERS < 3
表示您的表是只读访问的 + 该表上允许使用文档中提到的许多其他语句。
REORG_PENDING = 'Y' AND NUM_REORG_REC_ALTERS = 3
表示您的表是只读访问的,并且该表上不允许进行其他更改。

您必须自行决定是否需要根据此表访问模式对处于其状态的此类特定表采取任何操作。

© www.soinside.com 2019 - 2024. All rights reserved.