-1

在网上看了很多文章后,我仍然不确定DB2 Runstats.

据我了解,DB2 Runstats会将表索引“注册”到 DB2 目录中,以便下次运行相关查询时,它将使用索引来提高性能。(如果我错了请纠正我)

意思是,如果长时间DB2 Runstats不运行,索引会从DB2目录中删除吗?

我正在为表创建一个新索引。最初该表已经包含另一个索引。

创建新索引后,我DB2 Runstats在表上运行旧索引,但遇到以下错误:

SQL2314W 一些统计数据处于不一致的状态。新收集的“INDEX”统计信息与现有的“TABLE”统计信息不一致。SQLSTATE=01650

起初我以为是活动创建新索引的原因,而表仍处于“处理”阶段。DB2 Runstats第二天我再次运行该命令,但仍然出现同样的错误。

4

1 回答 1

3

您对 db2 runstats 的理解不正确。此命令收集有关给定表及其索引的统计信息,并将其放置到 SYSSTAT 模式中的视图中,如SYSSTAT.TABLESSYSSTAT.INDEXES等。DB2 优化器使用此信息来生成更好的查询访问计划。它不会“注册”索引本身。如果您不收集有关索引的统计信息,则不会自动删除索引。

至于警告信息 SQL2314W。

这只是表和索引统计信息在逻辑上不兼容的警告(例如,索引键的数量大于表中的行数)。有时,即使您使用单个 RUNSTATS 命令对表及其索引运行此类收集,同时收集有关主动更新的表的统计信息时也会发生这种情况。您可以忽略此消息,也可以使用单个命令(ALLOW READ ACCESS 子句)在对表及其索引进行统计收集期间使 RUNSTATS 实用程序锁定该表。

于 2018-12-20T09:21:21.183 回答