【问题标题】:Can I disable QUERY OPTIMIZATION for MQT in DB2 LUW without recreating it?我可以在 DB2 LUW 中禁用 QUERY OPTIMIZATION for MQT 而不重新创建它吗?
【发布时间】:2016-03-28 02:09:08
【问题描述】:

2021 年更新

这个问题对我来说不再实际。

我使用 DB2 的时间很短,我不知道在最近的版本中情况如何。

问题是:如果不重新构建 MQT,我无法测试它的效果。

这在处理多 Gb 数据时并不实用。

我之前没有找到解决方案,我不知道为什么问题被减去了。

SO 建议删除有答案的问题,谁知道呢:也许有人终于回答了。


我在 DB2 10.5 LUW 中有一个 MQT:

CREATE TABLE MyMQT AS(
SELECT * FROM MyTable
    WHERE
        ServerName = 'COL'
        AND LASTOCCURRENCE > TIMESTAMP '2015-12-21 00:00:00' 
)
DATA INITIALLY DEFERRED REFRESH immediate
ENABLE QUERY OPTIMIZATION
MAINTAINED BY SYSTEM;

我想DISABLE QUERY OPTIMIZATION 没有DROP/CREATE

我发现“更改物化查询表属性”https://www-01.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.admin/src/tpc/db2z_changemqtableattribs.html 但这是针对 z/OS 的。

如果我尝试:

ALTER TABLE MyMQT DISABLE QUERY OPTIMIZATION;

我明白了:

DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL0104N  An unexpected token "TABLE" was found following "ALTER ".  Expected
tokens may include:  "VIEW".  SQLSTATE=42601

LUW 的文档解释了如何将 MQT 更改为常规表以及其他方式。

我可以在不重新创建的情况下更改 DB2 LUW 中的 MQT 选项吗?


编辑

这很奇怪,但看起来这在 DB2 LUW 中是不可能实现的。

正如 data_henrik 提到的,可以为所有 MQT 禁用/启用优化。

我接受他的回答,虽然这不是我想要的。

【问题讨论】:

  • 你想达到什么目的?
  • 我想快速测试有无 QUERY REWRITE 的查询(哦,抱歉,这是一个预言机术语?)。我不想用 drop-create MQT 等待几分钟。

标签: materialized-views db2-luw


【解决方案1】:

试试这个:

refreshable-table-options

|--●--DATA INITIALLY DEFERRED--●--REFRESH--+-DEFERRED--+--●----->
                                           '-IMMEDIATE-'      

   .-ENABLE QUERY OPTIMIZATION--.      
>--+----------------------------+--●---------------------------->
   '-DISABLE QUERY OPTIMIZATION-'      

【讨论】:

  • 欢迎来到 Stack Overflow!请阅读How to Ask 并记住,您不仅要回答 OP,还要回答该问题的任何未来读者,尤其是在回答 5 年前的问题时。因此,我或其他任何人为什么要“试试这个”?不要在帖子中添加这样的非句子,而是请edit 包含对为什么有效的解释。
【解决方案2】:

没有个人经验,但你可以:

SET CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION = NONE

这将告诉 DB2 不考虑任何 MQT。稍后,您将通过将该变量设置为“系统”(默认值)或其他内容来启用查询优化。 That statement is documented here.

【讨论】:

  • 谢谢。这不是我想要的。
  • 您在寻找什么?这就是您可以禁用/启用 MQT 的使用方式。
  • 是的。但它会禁用 all MQT。它使其难以在测试环境中使用,并且在生产中无法使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
相关资源
最近更新 更多