MQT建索引报错SQL2314W

我在DB2上创建了一个MQT,顺序为:
1. 创建MQT
2.refresh MQT
3.create index on the MQT
4. runstats the MQT
但是第3步执行的时候出现报错信息:
SQL2314W  Some statistics are in an inconsistent state.  The newly collected
"INDEX" statistics are inconsistent with the existing "TABLE" statistics.
SQLSTATE=01650

但是查看发现该索引创建成功了,不知道是怎么回事,请问该怎么办呢?
我把第3、4步顺序换一下就没问题了,即先runstats 再建索引,这时候就可以了,请问顺序应不应该先runstats 再 建索引,如果是这样,建过索引之后还需要再runstats吗?
参与9

6同行回答

weiruan85weiruan85数据库管理员ibm
SQL2314W  , 比如你在runstat 的时候,有人在insert数据,这个时候索引就会发生变动, 于是警告出现了显示全部
SQL2314W  , 比如你在runstat 的时候,有人在insert数据,这个时候索引就会发生变动, 于是警告出现了收起
政府机关 · 2013-04-01
浏览3291
513412289513412289研发工程师哈哈
我的也报警,不过是在线做的。可能过程中有数据放生变化了。影响不大!显示全部

我的也报警,不过是在线做的。可能过程中有数据放生变化了。影响不大!

收起
互联网服务 · 2015-12-25
浏览3388
db2haodbdb2haodb数据库开发工程师IGI
回复 2# jimmy 是的,很感谢!显示全部
回复 2# jimmy
是的,很感谢!收起
互联网服务 · 2013-04-05
浏览3542
leo_wynleo_wyn商业智能工程师Security
下面是对 SQL2314W 的说明:某些统计信息处于不一致的状态。最近收集的 对象-1 统计信息与现有的 对象-2 统计信息不一致。说明查询优化器使用统计信息来确定查询的最佳存取方案。当存在不一致的统计信息时,如果有一致的统计信息集可用,那么优化器将使用不正确的信息执行存...显示全部
下面是对 SQL2314W 的说明:

某些统计信息处于不一致的状态。最近收集的 对象-1 统计信息与现有的 对象-2 统计信息不一致。

说明
查询优化器使用统计信息来确定查询的最佳存取方案。当存在不一致的统计信息时,如果有一致的统计信息集可用,那么优化器将使用不正确的信息执行存取方案求值。这可能会产生一个欠佳的存取方案。

导致此警告的可能原因包括下列各项。

如果仅对表发出 RUNSTATS,就可能会导致表级别统计信息与现有索引级别统计信息不一致的情况。同样,如果仅对索引发出 RUNSTATS 或者在索引创建期间发出 RUNSTATS,就可能会使表级别统计信息处于不一致状态。例如,如果在特定表上收集了索引级别统计信息,后来从此表中删除了大量行,那么对该表发出 RUNSTATS 只可能会导致表基数小于 FIRSTKEYCARD,这是一种不一致状态。
当并发执行许多插入、更新或删除操作时,如果发出指定了 ALLOW WRITE ACCESS 选项的 RUNSTATS,就有可能会因为在收集表统计信息与收集索引统计信息之间对表进行了更改而导致不一致情况。
如果发出指定了 TABLESAMPLE 选项的 RUNSTATS,那么过低的采样大小可能会导致不准确地推断统计信息,从而导致不一致情况。与 BERNOULLI 采样相比,SYSTEM 采样进行不准确地推断的机会较高。
用户响应
找出不一致的原因,然后再次收集统计信息以解决不一致问题。

发出 RUNSTATS 以同时收集表级别统计信息和索引级别统计信息。
在执行的插入、更新和删除操作量最低时或者完全未执行这些操作时收集统计信息。或者,如果并发插入、更新和删除操作不是必需的,那么发出指定了 ALLOW READ ACCESS 选项的 RUNSTATS。
增大采样大小,或者,如果发出指定了 TABLESAMPLE SYSTEM 的 RUNSTATS,那么改为使用 TABLESAMPLE BERNOULLI 选项。收起
系统集成 · 2013-04-02
浏览3406
jimmyjimmy数据仓库工程师招行软件中心
sql....w,这样的都是警告信息,可以忽略。你执行runstats就可以了显示全部
sql....w,这样的都是警告信息,可以忽略。
你执行runstats就可以了收起
银行 · 2013-04-01
浏览3398
leo_wynleo_wyn商业智能工程师Security
1、执行的顺序是正确的2、一般统计信息搜集和整理的顺序: RUNSTATS ->  REORGCHK ->  REORG ->  RUNSTATS -> BINDrunstats on table with distribution and detailed indexes all;reorgchk current statistics on table ;reorg table ;d...显示全部
1、执行的顺序是正确的

2、一般统计信息搜集和整理的顺序:

RUNSTATS ->  REORGCHK ->  REORG ->  RUNSTATS -> BIND

runstats on table
with distribution and detailed indexes all;

reorgchk current statistics on table ;

reorg table ;

db2rbind sample -l db2rbind.log收起
系统集成 · 2013-04-01
浏览3353

提问者

db2haodb
数据库开发工程师IGI
擅长领域: 数据库存储前置系统

相关问题

问题状态

  • 发布时间:2013-04-01
  • 关注会员:2 人
  • 问题浏览:12222
  • 最近回答:2015-12-25
  • X社区推广