zoukankan      html  css  js  c++  java
  • ORACLE 11G新特性之一(增加带default的字段)

       在11g之前,增加带default值的字段,实现原理如下:

    alter table t1 add c1 varchar2(20) default 'XX' not null;

    假设t1表有4千万行数据,oracle在执行上述DDL语句时,同时更新这4千万行数据成功后,才返回“成功提示”给用户。将可能导致如下问题:

    1. 更新4千万行数据,需要很长的时间才能完成。

    2. 耗尽所有的undo表空间,并产生大量的redo日志,甚至导致磁盘空间爆满,备库延时。

    3. 大量的数据库、系统性能开销。

    在11g(含)之后,实现原理如下:

    上述DDL操作不会更新整个表的记录。那么当用户查询包含新增字段(c1)的已有数据时,c1字段是否返回null值呢? 当然不是,实际上 当用户查询c1字段的已有数据时,

    Oracle将从数据字典获取该字段的default 值,并返回给用户。

    因此,11g之后的Oracle数据库新增一个带有default值并且非空的新字段时,只是更新了对应表的数据字典信息,所以无需在意undo和redo的影响。

    参考:http://www.oracle.com/technetwork/articles/sql/11g-schemamanagement-089869.html

  • 相关阅读:
    Windows ETW 学习与使用三
    暗云Ⅳ对SATA磁盘MBR Hook探索
    msahci代码调试备份
    mimikatz使用命令记录
    Windows ETW 学习与使用一
    RabbitMQ 实现延迟队列
    Redis 脱坑指南
    浅析 ThreadLocal
    IDEA2020.2.3破解
    用友NC 模块 简写(瞎猜的)
  • 原文地址:https://www.cnblogs.com/yiyuf/p/4103703.html
Copyright © 2011-2022 走看看