ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> DB2 >> 一次涉及到物化视图的DB2 Insert性能问题的诊断

一次涉及到物化视图的DB2 Insert性能问题的诊断(3/3)

来源:网络整理     时间:2017-05-11     关键词:

本篇文章主要介绍了" 一次涉及到物化视图的DB2 Insert性能问题的诊断",主要涉及到方面的内容,对于DB2感兴趣的同学可以参考一下: 一 问题描述:今天得到Devops兄弟的报告,说某个数据插入job突然间慢了很多,平时10多分钟就能完成的,跑了10个小时左右没有完成。 Devops的Lock...

    db2look -d DBNAME -e -x -l -a -o db2look.ddl

        把db2look.ddl文件ftp到本地,然后输入表名xxx_xxx_domain为关键字,一个个查。在经历50多次查找下一个后,突然眼前一亮,看到如下代码:
     create table DxxxOPS.xxx_USERS_MQT as (

       select xxxx
        union all
	select xxxx
	from  xxx.xxx_xxx_domain nd, xxx.USERS U2 
	where ((ND.xxx='yyy' ) and ND.DOMAIN_xxx ='OWNER' and U2.USER_NAME = ND.xxx and U2.DELETED=0 and U2.STATUS='Active')
	and nd.deleted=0 and U2.ID is not null
	) group by xxxx
	) DATA INITIALLY DEFERRED REFRESH IMMEDIATE ENABLE QUERY OPTIMIZATION MAINTAINED BY SYSTEM IN "xxx" 		ORGANIZE BY ROW;
 

       原来是一个物化视图使用了refresh immediate, 这意味着这个物化视图所涉及的表的任何变化,都会激活这段logic来往物化视图中插入数据。难怪xxx_xxx_domain的变化会导   致users表的读操作。

  9. 查看为什么这个问题最近几天才出现。

   select tabname,create_time,stats_time,card,npages from syscat.tables where tabname='xxxx_USERS_MQT'
       下面是结果:
        xxxxx_USERS_MQT    2017-04-28-10.16.43.263915        -1 -1

     原来这个表上月底才建立的。

 三  解决方案:

      1. 将此物化视图 refresh immediate 改为 => refresh deferred,  就是说次物化视图的数据从以前只要基表有数据更新就马上refresh => 需要使用物化视图时,手动通过“refresh table xxx"来进行数据更新。

      2. 如果非得需要refresh immediate 在运行此import批量操作之前:先用 drop 这个物化视图,运行成功后重建。


  

以上就介绍了 一次涉及到物化视图的DB2 Insert性能问题的诊断,包括了方面的内容,希望对DB2有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_4315509_3.html

相关图片

相关文章