create table之storage選項initial和其它

wisdomone1發表於2013-06-24

---直接在表級別指定儲存引數initial
SQL> create table t_table_level(a int) storage(initial 4m maxsize 10m);

Table created.

---未插入資料前不分配extent
SQL> select segment_name,extent_id,bytes,blocks from user_extents where segment_name='T_TABLE_LEVEL';

no rows selected

---僅插入一條記錄
SQL> insert into t_table_level values(1);

1 row created.

SQL> commit;

Commit complete.

---一下子分配了4個extent,且每個extent大小為1m,剛好達到initial的4m,即initial與extent的關係
SQL> select segment_name,extent_id,bytes,blocks from user_extents where segment_name='T_TABLE_LEVEL';

SEGMENT_NAME          EXTENT_ID      BYTES     BLOCKS
-------------------- ---------- ---------- ----------
T_TABLE_LEVEL                 0    1048576        128
T_TABLE_LEVEL                 1    1048576        128
T_TABLE_LEVEL                 2    1048576        128
T_TABLE_LEVEL                 3    1048576        128


--若指定的initial 小於最小的extent 64k

SQL> drop table t_table_level purge;

Table dropped.

SQL> create table t_table_level(a int) storage(initial 60k);

Table created.

SQL> insert into t_table_level values(1);

1 row created.

SQL> commit;

Commit complete.

---若initial 小於最小的extent 64k,同樣分配一個64k的extent
SQL> select segment_name,extent_id,bytes,blocks from user_extents where segment_name='T_TABLE_LEVEL';

SEGMENT_NAME          EXTENT_ID      BYTES     BLOCKS
-------------------- ---------- ---------- ----------
T_TABLE_LEVEL                 0      65536          8
   
   
SQL> drop table t_table_level purge;

Table dropped.

SQL> create table t_table_level(a int) storage(initial 70k);

Table created.

SQL> insert into t_table_level values(1);

1 row created.

SQL> commit;

Commit complete.

---如果initial大於最小的extent而小於次小的extent,則分配2個64k extent
SQL> select segment_name,extent_id,bytes,blocks from user_extents where segment_name='T_TABLE_LEVEL';

SEGMENT_NAME          EXTENT_ID      BYTES     BLOCKS
-------------------- ---------- ---------- ----------
T_TABLE_LEVEL                 0      65536          8
T_TABLE_LEVEL                 1      65536          8
   
   
小結:1,initial 與next針對segment中extent的分配
     2,即initial與next決定建立segment及擴充套件segment
     3,extent的大小有幾類:64K, 1M, 8M, and 64M
     4,若initial<64k,則初始建立1個64k的extent
         64k         其它同上理

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

相關文章