Home > Oracle > SQL优化之checkpoint not complete

SQL优化之checkpoint not complete

话说从前有一个从excel导入到数据库中的功能,近来该功能“超级”缓慢,严重影响生产活动。

从告警日志中,可以找到一些线索:日志切换非常频繁,出现多处checkpoint not complete。

同时,在系统中查询产生redo最多的会话,正是上面提到的那个功能,导入不到1w条数据,竟然累计产生近10G的redo!!!

到这里,已经有理由怀疑是这个功能出现的问题,导致过多的redo,进一步产生checkpoint not complete等待;

OK,10046,终于找到了问题的根源:不合理使用的物化视图

在导入功能相关的数据库表上,建有一个物化视图,我们知道物化视图刷新可以on commit,on demand,而这里使用了on commit,而且每次都是全刷新;更糟糕的是,导入功能是每条记录提交一次!

也就是说:每导入一条数据,物化视图需要清空,重新刷新数据。

解决思路:

  • 物化视图刷新模式修改为on demand
  • 物化视图全刷新变为快速刷新
  • 导入数据使用分批提交方式
Categories: Oracle Tags: ,
  1. July 28th, 2009 at 13:45 | #1

    这是一个comment测试

  2. July 28th, 2009 at 13:48 | #2

    这又是一个comment测试

  3. gclizh
    July 30th, 2009 at 16:27 | #3

    haha
    肯定不是我建的 MV :D

  4. July 30th, 2009 at 17:07 | #4

    gclizh :

    haha
    肯定不是我建的 MV :D

    事实上,是客户自己建的@@

  1. No trackbacks yet.