zoukankan      html  css  js  c++  java
  • 如果一个触发器中只有一条Null语句,是否会产生日志?为什么?

    是否产生日志,以及产生多少日志,应区分:
    三种不同的触发器(Befor,After,Instead),
    三种不同的DML操作(Insert,Update,Delete),
    两类Oracle版本(9i及以下,10G)区别来说.

    触发器中的什么都不执行也可能产生日志,并且某些情况下产生大量的额外日志,影响性能.

    主要情况如下:
    1.Befor和After触发器在9i及以下进行Insert操作会额外增加近3倍的日志,Delete操作不受影响,Update操作只受Befor触发器影响不受After触发器影响
    2.行的大小影响Insert操作产生的额外日志量,但不影响Update和Delete操作(注意:触发器中只有Null语句,按常理来讲都不应受行大小的影响)
    3.Instead触发器不受影响

    Oracle10G中,发生了一点变化,Befor和After触发器对Insert和Delete操作都不受影响,对Update操作都有影响.
    按常规理解,这应算作Oracle的一个Bug,但Oracle没有这样认为,所以没有补丁,只有10G会缓解这种问题的影响.

    详细的情况及实验脚本,参见Tom的两部著作中关于重作日志章节的讲解:
    2002年,<Expert one on one Oracle>
    2006年,<Expert.Oracle.Database.Architecture.9i.and.10g.Programming.Techniques.and.Solutions>

  • 相关阅读:
    多线程 wait和sleep区别
    什么是分布式系统,如何学习分布式系统
    Mybatis传多个参数(三种解决方案)
    UML中类之间的几种关系
    前缀、中缀、后缀表达式
    数据库连接池c3p0和dbcp
    代码收藏
    spark教程(12)-生态与原理
    spark教程(10)-sparkSQL
    spark教程(九)-操作数据库
  • 原文地址:https://www.cnblogs.com/zyk/p/531134.html
Copyright © 2011-2022 走看看