保险数据库

【挑战问题】DB2物化查询表(MQT)经验点滴 欢迎讨论!

MQT 物化查询表

序言

什么是物化查询表,作用是什么.

物化查询表(MQT)的定义是以一次查询的结果为基础的。MQT 可以显著提高查询的性能。

物化查询表可以显著提高查询的性能,尤其是提高复杂查询的性能。如果优化器确定查询或查询的一部分可以用一个 MQT 来解决,那么就会重写查询,以便利用 MQT。

但是我们在实际项目中要使用他, 为达到查询高效,和高性能和高稳定, 他以什么要的机制去刷新数据,和保证数据的高效性, 还有创建他有什么依赖和限制等等. 下面让我们一起来讨论

物化查询表简介

首先我们先介绍 物化查询表基本概念:

MQT

物化查询表(MQT)是一种以一次查询的结果为基础定义的表。包含在物化查询表中的数据来自定义物化查询表时所基于的一个或多个表。而 总结表(也称自动总结表,AST)对于 IBM? DB2? Universal Database?(UDB)for Linux、 UNIX? 和 Windows?(DB2 UDB)的用户来说应该感到比较熟悉,它们可以看作是特殊的 MQT。fullselect 是总结表定义的一部分,它包含一个 GROUP BY 子句,该子句总结 fullselect 中所引用表中的数据。


您可以将 MQT 看作一种物化的视图。视图和 MQT 都是基于一个查询来定义的。每当视图被引用时,视图所基于的查询便会运行。但是,MQT 实际上则是将查询结果保存为数据,您可以使用 MQT 中的这些数据,而不是使用底层表中的数据。


物化查询表可以显著提高查询的性能,尤其是提高复杂查询的性能。如果优化器确定查询或查询的一部分可以用一个 MQT 来解决,那么就会重写查询,以便利用 MQT。


MQT 可以在创建表时定义,或者定义为系统维护的 MQT,或者定义为用户维护的 MQT。下面的几个小节将介绍这两种类型的 MQT,另外再介绍总结表和 staging 表。后面的例子要求连接到 SAMPLE 数据库。如果您系统上还没有创建 SAMPLE 数据库,那么可以通过在命令行提示符下输入 db2sampl 命令来创建这个数据库。

参与25

24同行回答

lilisportslilisports数据仓库工程师IBM
这个太棒了,很详细啊。显示全部
这个太棒了,很详细啊。收起
IT咨询服务 · 2011-09-07
浏览1234
wangzixuwangzixu系统工程师
真的是很好的文章,多谢楼主,学习了显示全部
真的是很好的文章,多谢楼主,学习了收起
IT分销/经销 · 2011-06-01
浏览1207
macrozengmacrozeng数据库管理员IBM
原来用过物化视图解决过一个性能问题,速度提高了 100 倍以上,对于无可优化的复杂查询还是蛮有用的显示全部
原来用过物化视图解决过一个性能问题,速度提高了 100 倍以上,对于无可优化的复杂查询还是蛮有用的收起
政府机关 · 2011-06-01
浏览1223
haoqingyunhaoqingyun数据库运维工程师CMBC
楼主是把几篇文章或者转帖汇总起来的吧,好像没有说原创。不过内容还是挺好的。我就在想,所有内容在infocenter上都有,但是内容分散在好几个主题中,每次看还要不停地点链接,而且有可能还看不全,或者看了后面忘了前面,infocenter为啥不能把同一个主题的内容都汇总一下呢...显示全部
楼主是把几篇文章或者转帖汇总起来的吧,好像没有说原创。不过内容还是挺好的。

我就在想,所有内容在infocenter上都有,但是内容分散在好几个主题中,每次看还要不停地点链接,而且有可能还看不全,或者看了后面忘了前面,infocenter为啥不能把同一个主题的内容都汇总一下呢收起
银行 · 2011-05-25
浏览1194
wangzhonnewwangzhonnew软件工程师IBM Canada Ltd.
转帖?看到有博客08年已经发表的~~~ 楼主当年自己写的?显示全部
转帖?看到有博客08年已经发表的~~~ 楼主当年自己写的?收起
IT分销/经销 · 2011-05-19
浏览1235
start2000start2000系统架构师ABB
很多时候refresh以后还紧接着一个runstats.显示全部
很多时候refresh以后还紧接着一个runstats.收起
互联网服务 · 2011-05-19
浏览1173
limin19821limin19821系统工程师乐酷天
不顶没天理!显示全部
不顶没天理!收起
IT分销/经销 · 2011-05-19
浏览1215
drdb2drdb2系统工程师se
分享多年前用的一个简单script (因为早年MQT有bug, 特别是在大系统上with DPF; Had to keep it simple)db2 +c "alter table mqtname activate not logged initially"db2 +c "refresh table mqtname"db2 commit显示全部
分享多年前用的一个简单script (因为早年MQT有bug, 特别是在大系统上with DPF; Had to keep it simple)
db2 +c "alter table mqtname activate not logged initially"
db2 +c "refresh table mqtname"
db2 commit收起
互联网服务 · 2011-05-19
浏览1184
wangzixuwangzixu系统工程师
这位大哥写的真棒!佩服的很!显示全部
这位大哥写的真棒!佩服的很!收起
IT分销/经销 · 2011-05-18
浏览1197
girlgirl销售dsac
绝对的经典资料!赞一个显示全部
绝对的经典资料!赞一个收起
机械装备 · 2011-05-18
浏览1219

提问者

weixiaom
高级架构师泰康养老保险股份有限公司
擅长领域: 数据库云计算信创

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-05-18
  • 关注会员:1 人
  • 问题浏览:13416
  • 最近回答:2011-09-07
  • X社区推广