最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle11gR2新特性:DeferredSegmentGeneration

来源:懂视网 责编:小采 时间:2020-11-09 08:29:48
文档

Oracle11gR2新特性:DeferredSegmentGeneration

Oracle11gR2新特性:DeferredSegmentGeneration:当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 10MB 的初始 extent 。你很快会意识到如果每个对象在创建时都要分配 10 MB 的磁盘空间,则部署 DDL 需要花费大量的时间。你可能会想到让 Oracle 延迟每个对象的初始 exte
推荐度:
导读Oracle11gR2新特性:DeferredSegmentGeneration:当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 10MB 的初始 extent 。你很快会意识到如果每个对象在创建时都要分配 10 MB 的磁盘空间,则部署 DDL 需要花费大量的时间。你可能会想到让 Oracle 延迟每个对象的初始 exte

当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 10MB 的初始 extent 。你很快会意识到如果每个对象在创建时都要分配 10 MB 的磁盘空间,则部署 DDL 需要花费大量的时间。你可能会想到让 Oracle 延迟每个对象的初始 extent 分

当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 10MB的初始 extent。你很快会意识到如果每个对象在创建时都要分配 10 MB的磁盘空间,则部署DDL需要花费大量的时间。你可能会想到让 Oracle延迟每个对象的初始extent分配直到该表中实际插入记录为止。

要延迟对象初始 segment的生成,唯一的方式就是使用 Oracle Database 11g R2。从 Oracle Database 11g R2以后,默认情况下,表(及其关联的索引)的物理 extent分配会延迟到该表插入首条记录时。

下面我们以一个简单的小例子来说明这一新特性:

首先,我们新建一张表(不插入任何记录):

SQL> create tabletest as select * from emp where 1=2;

Table created.

然后,我们查询 USER_SEGMENTS和 USER_EXTENTS来验证该表是否分配了物理的存储空间:

SQL> selectcount(*) from user_segments where segment_name='TEST';

COUNT(*)

----------

0

SQL> selectcount(*) from user_extents where segment_name ='TEST';

COUNT(*)

----------

0

接下来我们往新建的 TEST表中插入一条记录,验证记录插入后是否为该表分配存储空间:

SQL> insert intotest select * from emp where rownum < 2;

1 row created.

SQL> selectcount(*) from user_extents where segment_name ='TEST';

COUNT(*)

----------

1

SQL> selectcount(*) from user_segments where segment_name='TEST';

COUNT(*)

----------

1

上面的行为与之前的 Oracle版本有很大区别。在之前的Oracle版本中,只要创建一个对象,就会为该对象分配初始化 segment及相应的 extent。Deferred segment generation同样适用于分区表和分区索引。表在其初始记录插入之前不会分配初始 extent空间。

从 Oracle Database 11g R2以后,对于在 local managed的表空间中创建的非分区堆表,其初始 segment会延迟到该表中的第一条记录插入时创建。

Oracle 11g R2 的新特性deferred segment creation:

在创建表对象时不会分配任何物理存储空间,直至该表插入首条记录时才会分配初始 segment空间。这使得与之前的Oracle版本相比,在表中插入第一条记录时的速度要稍显得慢点,对于大多数场景,这种性能上的影响基本可以忽略。

将DEFERRED_SEGMENT_CREATION初始化参数设置为 FALSE可以禁用deferred segment creation特性。此参数的默认值为 TRUE。我们还可以在创建表时指定如下子句(新特性)来控制deferredsegment creation的

行为:

SEGMENT CREATION IMMEDIATE and SEGMENT CREATION DEFERRED

示例如下:

create table f_regs(

reg_id number

,reg_namevarchar2(2000))

segment creationimmediate;

注意要使用SEGMENTCREATION DEFERRED子句,必须将 COMPATIBLE参数设置为11.2.0.0.0及以上版本。


作者:xiangsir

9063657

QQ:444367417

MSN:xiangsir@hotmail.com

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Oracle11gR2新特性:DeferredSegmentGeneration

Oracle11gR2新特性:DeferredSegmentGeneration:当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 10MB 的初始 extent 。你很快会意识到如果每个对象在创建时都要分配 10 MB 的磁盘空间,则部署 DDL 需要花费大量的时间。你可能会想到让 Oracle 延迟每个对象的初始 exte
推荐度:
标签: oracle 新特性 特性
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top