我的疑问是如何确定何时需要重组一个表。
我的应用程序执行以下选择:
SELECT TABNAME FROM SYSIBMADM.ADMINTABINFO WHERE TABSCHEMA = 'DB2ADMIN' AND REORG_PENDING = 'Y'
现在我发现了以下IBM的文章:
IBM documentation
他们建议用途:
SELECT TABSCHEMA, TABNAME, NUM_REORG_REC_ALTERS, REORG_PENDING FROM SYSIBMADM.ADMINTABINFO where tabname='TAB1'
因此,从'SYSIBMADM.ADMINTABINFO'开始,它们还考虑列'NUM_REORG_REC_ALTERS'
在articale报道:
- 某些“ALTER TABLE”语句被认为是“REORG推荐的”操作。经过3次这样的操作后,您的表将被强制进入reorg挂起状态。允许对具有“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)
你对此有何看法?
谢谢
1条答案
按热度按时间c3frrgcw1#
表重组的必要性必须由这种表访问模式决定。
REORG_PENDING = 'Y' AND NUM_REORG_REC_ALTERS < 3
意味着你的表是只读可访问的+一些其他的语句允许在这个表中提到的文档。REORG_PENDING = 'Y' AND NUM_REORG_REC_ALTERS = 3
意味着你的表是只读的,并且不允许在这个表上进行其他的修改。您必须自己决定是否需要对这种状态取决于此表访问模式的特定表执行任何操作。