Oracle11gr2延遲段建立

yangtingkun發表於2010-01-09

11.2中,Oracle新增了延遲段建立的特性。

 

 

任何一個資料庫中,都難免會存在一些空表,如果設計的不好,很可能資料庫中存在大量沒有資料的表。而11.2中,Oracle推出的一個新特性,可以避免大量的空表佔用空間,這就是段延遲建立。

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> create table t_segment_immediate (id number)
  2  segment creation immediate;

表已建立。

SQL> create table t_segment_deferred (id number)
  2  segment creation deferred;

表已建立。

SQL> create table t_segment_default (id number);

表已建立。

SQL> select segment_name
  2  from user_segments
  3  where segment_name like 'T_SEGMENT%';

SEGMENT_NAME
---------------------------------------------------------------------------------
T_SEGMENT_IMMEDIATE

可以看到,三個表建立後,只有SEGMENT CREATION IMMEDIATE的表包含了段資訊,而其他兩個表並沒有建立段。

Oracle不但新增了段延遲的特性,而且將這個特性設定為預設方式,也就是說,使用者不需要在建表的時候指定任何的設定,就自動擁有了段延遲建立帶來的優點。

當第一條記錄插入到表中時,資料段被建立:

SQL> insert into t_segment_deferred values (1);

已建立 1 行。

SQL> insert into t_segment_default values (1);

已建立 1 行。

SQL> select segment_name
  2  from user_segments
  3  where segment_name like 'T_SEGMENT%';

SEGMENT_NAME
---------------------------------------------------------------------------------
T_SEGMENT_DEFAULT
T_SEGMENT_DEFERRED
T_SEGMENT_IMMEDIATE

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-624747/,如需轉載,請註明出處,否則將追究法律責任。

相關文章