Oracle 11g R2 新特性:Deferred Segment Generation
2013-06-11 09:25
525 查看
当你安装一个包含成千上万的表和索引的应用时,如果每个表和索引都初始分配一个 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
原文链接:http://blog.csdn.net/xiangsir/article/details/9063657
QQ:444367417
MSN:xiangsir@hotmail.com
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
原文链接:http://blog.csdn.net/xiangsir/article/details/9063657
QQ:444367417
MSN:xiangsir@hotmail.com
相关文章推荐
- oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结
- oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结
- oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结
- Oracle 11g的Deferred Segment Creation
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- Oracle 11g r2分析函数新特性(三)
- Oracle 11g R2令人赞赏的五大新特性
- Oracle 11g R2 RAC 高可用连接特性
- Oracle 11gR2新建空表不分配Segment
- 新特性的副产品--从11g的DEFERRED SEGMENT CREATION说起 推荐
- Oracle 11g r2数据泵新特性(五)
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- Oracle 11g r2数据泵新特性(三)
- Oracle 11g r2数据泵新特性(二)
- Oracle 11g r2数据泵新特性(一)
- Oracle 11g r2分析函数新特性(一)分析函数NTH_VALUE
- 转 -- Oracle 11g R2 RAC高可用连接特性 – SCAN详解
- oracle 11g deferred_segment_creation段延迟创建
- 新特性的副产品--从11g的DEFERRED SEGMENT CREATION说起
- Oracle 11g的Deferred Segment Creation