DB2iSeries物化视图刷新

DB2iSeries物化视图刷新,db2,db2-400,Db2,Db2 400,我创建了以下物化查询表: CREATE TABLE SCHEMA.TABLE AS (SELECT * FROM SCHEMA.TABLEEXAMPLE) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER DISABLE QUERY OPTIMIZATION; 当我执行REFRESH TABLE SCHEMA.TABLE时,它会被锁定,以便其他用户从中读取 正在从IBM阅读此文档

我创建了以下物化查询表:

CREATE TABLE SCHEMA.TABLE AS
  (SELECT * FROM SCHEMA.TABLEEXAMPLE)
     DATA INITIALLY DEFERRED
     REFRESH DEFERRED
     MAINTAINED BY USER
     DISABLE QUERY OPTIMIZATION;
当我执行REFRESH TABLE SCHEMA.TABLE时,它会被锁定,以便其他用户从中读取

正在从IBM阅读此文档

我试图执行以下语句:

REFRESH TABLE SCHEMA.TABLE ALLOW READ ACCESS
但是我得到了以下错误:SQL状态:42601意外关键字ALLOW


我在声明中遗漏了什么?在物化查询表被更新时,还有其他方法允许对其进行读取访问吗?

DB2forIBMi上的MQTs落后于DB2forLUW中可用的功能

我从来没有考虑过它们,相反,带有计算列的编码向量索引EVI满足了我考虑过的所有需求。注意,DB2LUW没有EVI

根据Mao的评论,您可以尝试删除一个重新创建MQT的文件,其中包含以下内容:

CREATE TABLE SCHEMA.TABLE AS
  (SELECT * FROM SCHEMA.TABLEEXAMPLE)
     DATA INITIALLY DEFERRED
     REFRESH DEFERRED
     MAINTAINED BY USER
     DISABLE QUERY OPTIMIZATION
     with NC;
但我认为刷新仍然需要以独占方式访问MQT

我能想到的唯一选项是在使用MQT时刷新MQT

以编程方式,在基表上使用触发器,或者使用使用SQL一次更新几行的进程

删除禁用查询优化并不直接访问MQT。而是依赖优化器在适当的时候访问它。现在,您可以每隔几个小时创建一个版本,数据库应该开始使用更新的版本进行新的查询。旧版本不再使用后,您可以将其删除或刷新


如果Db2服务器在i系列上运行,则不要为Db2服务器引用Linux/Unix/Windows页面。不同的操作系统,不同的Db2风格。i系列刷新表的正确页面是,正如您所看到的,它不支持该子句。可以在SELECT上为mqt指定一个较小的隔离子句。谢谢。您知道如何指定隔离级别吗?我在select语句的末尾尝试了with UR选项:select*FROM SCHEMA.TABLE with UR,但我得到错误SQL状态:57033,文件正在使用请考虑在Db2 for I知识中心搜索隔离级别