来自 DB2 中 sysibm 的表列表以及这些表中存在的记录数

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

有没有办法确定 sysibm 中所有持久表的记录总数。我尝试了以下查询,但是 CARD 与该特定表的总计数不匹配。

SELECT name, TYPE, CARD, STATS_TIME FROM SYSIBM.SYSTABLES where name='XXX'
db2
1个回答
0
投票

仅当相关表的 runstats 实用程序成功完成时,SYSIBM.SYSTABLES.CARD 列才会更新。

因此,CARD 中的值是估计值,在插入/删除次数较多的繁忙数据库上,更新后可能会出现错误。

因此,请仔细了解您真正需要了解所有持久表的精确计数。如果它是静态数据库(没有任何变化),那么所有表的 runstats 将很有用(无需采样),但如果涉及 TB 级的数据,那么这可能会消耗大量 I/O 和 CPU。

您还可以使用匿名块在循环中对感兴趣的表动态执行

select count(...)
,而不是依赖于 runstats。这也可能需要相当长的时间并消耗大量 I/O。

这就是您需要充分了解每个持久表需要精确行计数的原因,以及此类计数在非静态繁忙数据库中的短暂性。

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