博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE 11G新特性之一(增加带default的字段)
阅读量:5346 次
发布时间:2019-06-15

本文共 642 字,大约阅读时间需要 2 分钟。

   在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

posted on
2014-11-17 15:40  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/yiyuf/p/4103703.html

你可能感兴趣的文章
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
DataGrid 点击 获取 行 ID
查看>>
git 使用
查看>>
边框圆角方法
查看>>
asp.net WebApi自定义权限验证消息返回
查看>>
php中eval函数的危害与正确禁用方法
查看>>
20172315 2017-2018-2 《程序设计与数据结构》第十一周学习总结
查看>>
MySQL添加、修改、撤销用户数据库操作权限的一些记录
查看>>
关于谷歌浏览器Chrome正在处理请求的问题解决
查看>>
Git核心技术:在Ubuntu下部署Gitolite服务端
查看>>
平面波展开法总结
查看>>
建造者模式
查看>>
ArraySort--冒泡排序、选择排序、插入排序工具类demo
查看>>
composer 安装laravel
查看>>
8-EasyNetQ之Send & Receive
查看>>
Android反编译教程
查看>>
List<string> 去重复 并且出现次数最多的排前面
查看>>
js日志管理-log4javascript学习小结
查看>>