全国统一服务热线:020-38267409 设为首页 加入收藏

技术中心

物化查询表 (MQT) 是根据查询结果来定义的一种表,其数据形式是从一个或多个源表中获取的预计算结果,这些源表是 MQT 定义的基础。在我们从源表进行查询时,会自动先查询与源表有关联的 MQT,以确定其中是否具有满足查询条件的数据。如果确实存在这样的数据,则无需查询源表。采用这种查询方式可以提高查询效率,在查询海量数据时效果尤为显著。

您可能会感到疑惑,MQT 与同样基于源表的视图之间有什么样的区别?两者之间的主要区别在于数据存储方式。视图的数据存储在源表中,而 MQT 的数据实际上存储在这些 MQT 中。由于存在这样的差异,因此在创建 MQT 时,由于可以直接、自动地查询 MQT,源表的查询效率将会大大提高。相比之下,视图无法提高查询效率,因为视图中没有存储任何数据,只能从源表中获取数据。正因如此,如果需要频繁查询大型源表,那么建议您为其创建 MQT,用它来存储您关注的数据。在使用 MQT 存储数据时,应考虑安排定期刷新数据,以确保 MQT 总是拥有最新数据。

您可以通过多种方式管理 IBM i 上的 MQT,包括绿屏、IBM Navigator for i 等。本文将介绍如何使用 Navigator for i 通过以下两种方法管理 MQT:

  • 直接使用 IBM Navigator for i 创建 MQT
  • 将现有源表转换为 MQT

如果没有使用过 IBM Navigator for i,那么您应该了解它是 IBM i 6.1 中推出的一种便捷、直观的 Web 界面,具有开箱即用的特点。开始使用这种工具非常简单 — 只需将浏览器指向 http://hostA:2001(其中的 hostA 是您的 IBM i 系统的名称),如 信息中心 所述。

直接使用 IBM Navigator for i 创建 MQT

请按照以下 8 个步骤直接使用 IBM Navigator for i 创建 MQT:

  1. 展开“IBM i Management”。在 IBM Navigator for i 左侧可以看到任务导航树。展开左侧任务导航树中的 Database>Databases。在“Databases”下方,您将看到此系统中可以操作的所有数据库实例。

  2. 展开“Databases”下方的一个数据库实例之后,您将看到可为此数据库实例管理的所有对象类别。展开“Schemas”,再展开您将在其中创建 MQT 的架构实例(如图 1 所示)。



    图 1.
    图 1.

  3. 打开此架构实例中的“Tables”文件夹。在所有表列表中,从“Actions”菜单中选择 New>Materialized Query Table 操作,以显示创建 MQT 的窗格(如图 2 所示)。



    图 2
    图 2

  4. 在“New Materialized Query Table”窗格中,输入 MQT 的名称和用于创建 MQT 的 select 语句

  5. 使用“Check Syntax”检查查询语句中是否存在语法错误。如果未找到任何错误,您将看到这样一条消息:“Syntax check completed successfully”。

  6. 您还可以使用“Preview Results”预览源表中满足 select 语句的数据。预览的所有数据都将存储在即将创建的 MQT 中。

  7. 单击“Show SQL”按钮可以查看用于创建 MQT 的 SQL 语句。您还可以在绿屏上运行此 SQL 语句来创建 MQT。

  8. 如果在单击“OK”之前未选中“Populate table with select statement results”,那么“Full select statement”字段中的 SQL 语句不会在创建 MQT 时立即运行。在这种情况下,如果对 MQT 启动“View Contents”操作,就会发现表的内容是空的。

如果希望在创建 MQT 时立即执行“Full select statement”,请修改 MQT 定义,选中“Populate table with select statement results”。通过以上方法,在执行“Full select statement”时,就可以将满足 SQL 语句的数据存储到所创建的 MQT 之中。

在这种情况下,如果对 MQT 启动了“View Contents”操作,那么表的内容将会正确显示。

将现有源表转换为 MQT

创建 MQT 的第二种方法是利用现有源表定义,这种方法比第一种方法更高效。请按以下 7 个步骤进行操作:

  1. 展开“IBM i Management”,然后在左侧任务导航树中展开 Database>Databases(如图 3 所示)。

    图 3.
    图 3

  2. 展开“Databases”下方的一个数据库实例。展开“Schemas”,然后展开您会在其中将现有源表转换为 MQT 的架构实例。

  3. 打开该架构实例下的“Tables”文件夹,然后选择要转换为 MQT 的源表。

  4. 打开此源表的定义。

  5. 在表定义窗格中,选择“Materialized Query Table”选项卡,设置“Set as MQT”,然后输入“Full select statement”(如图 4 所示)。



    图 4
    图 4

  6. 如果在未选中“Populate table with select statement results”的情况下单击“OK”,此源表将被转换成包含其原始数据的 MQT。这是因为在更新表定义时并未立即执行“Full select statement”。

  7. 如果在选中“Populate table with select statement results”的情况下单击“OK”,那么此源表将被转换成不包含其原始数据的 MQT。这是因为在更新表定义时立即执行了“Full select statement”。源表中满足 SQL 语句的源表将存储到 MQT 中。


管理 MQT

除了创建 MQT 之外,您还可以使用 IBM Navigator for i 管理 MQT 和其他操作。例如,您可以更新 MQT 定义,修改“Full Select Statement”,以便从源表获取新数据;查看“Index Advisor”,了解哪些列的查询频率较高,以便为这些列创建索引,从而提高查询效率;还可以为不同用户设置权限,让用户具有不同的授权级别等。

如果您希望了解是否有任何 MQT 与某个源表有关联,那么可以选择源表的“Show Materialized Query Tables”或“Show Related”操作。这样不仅能直接了解是否为源表创建了 MQT,如果 MQT 存在,还能轻松查看 MQT 的具体信息。


总结

本文简单地介绍了如何使用 IBM Navigator for i 创建和管理 MQT。利用 IBM Navigator for i,您可以更加便捷地操作 MQT,这有助于您避免直接使用 SQL 语句或绿屏的麻烦。希望您可以亲自动手尝试使用 IBM Navigator for i,享受它带来的易用性和便捷性。

本文的英文原文最先在 IBM Systems Magazine 在线网站(www.ibmsystemsmag.com)上发布。


参考资料

学习

  • IBM i 7.1 信息中心

  • IBM i Database programming 信息中心

  • IBM DB2 Database for Linux, UNIX, and Windows 信息中心

  • 参考 IBM Systems Magazine for IBM i 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

  • IBM developerWorks 中国 IBM i 专区 :提供给 IBM i 用户和开发者的专业技术资源。

讨论

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

  • 加入 IBM 软件下载与技术交流群组,参与在线交流。

 


法律声明 人才招聘 联系我们

广州公司: 广州市中山大道89号华景软件园C410-411         上海公司: 上海市浦东新区浦建路729弄东方金座1804
Copyright 2009 Techsung Communications International Inc. All Rights Reserved 粤ICP备09140814号-4