---直接在表级别指定存储参数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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-764659/