ITPub博客

首页 > Linux操作系统 > Linux操作系统 > extent autoallocate分配时,表是如何分配空间

extent autoallocate分配时,表是如何分配空间

原创 Linux操作系统 作者:tolywang 时间:2007-06-23 00:00:00 0 删除 编辑
SQL>create tablespace demo datafile 'd:oracleoradataenzdemo01.dbf' size 2048M
extent management local autoallocate segment space management manual;
在这个表空间上分别创建下面的表:
create table SPACE_auto as select * from all_objects
tablespace DEMO;

表space_auto实际空间分配策略
/*先分配16个64K的extent,
0-15 extents 每个大小是64K 合计大小 1M
16-79 extents 每个大小是1M 合计大小 63M --以上两项大小合计 64M
80-199 extents 每个大小是8M 合计大小 960M --以上三项大小合计 1024M=1G
200-?? extents 每个大小是64M
*/
create table SPACE_1M as select * from all_objects
tablespace DEMO
storage
(
initial 1M
next 1M --忽略
minextents 1
maxextents unlimited
);
实际空间分配策略 /*先分配16个64K的extent,然后是1M的extent */

create table SPACE_8M as select * from all_objects
tablespace DEMO
storage
(
initial 8M
next 8M --忽略
minextents 1
maxextents unlimited
);
实际空间分配策略 /*初始分配8个1M的extent */

create table SPACE_32M as select * from all_objects
tablespace DEMO
storage
(
initial 32M
next 32M --忽略
minextents 1
maxextents unlimited
);
实际空间分配策略/*初始分配32个1M的extent */

create table SPACE_64M as select * from all_objects
tablespace DEMO
storage
(
initial 64M
next 32M --忽略
minextents 1
maxextents unlimited
);
实际空间分配策略/*初始分配64个1M的extent */
========================================================================================================
create table SPACE_128M
as select * from all_objects
tablespace DEMO
storage
(
initial 128M
next 128M --忽略
minextents 1
maxextents unlimited
);

/*初始分配规律如下
extent0 =8M
extent 1-49=1M
extent 50-170 =8M
extent 171 开始 extent=64M
可以看到当segment大小=8+49+121*8=1025M>1G时,开始分配64M大小的extents
*/

以上结果都是针对数据库版本 9.2.0.8 for windows,demo表空间是Local & Autoallocate来分配的。
对于10.2.0.2版本的oracle,分配规律有变化了,
create table SPACE_128M as select * from all_objects
tablespace DEMO
storage
(
initial 128M
next 128M --忽略
minextents 1
maxextents unlimited
);
/*初始分配规律如下
extent0-127=8M 128×8M=1G extent 128=64M,
也就segment大于1G,那么分配64M extent */

可以看到,oracle10g的分配更科学点。
总结:使用autoallocate方式分配表使用的空间时,当segment的大小大于1G时,oracle开始分配64M的extents。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84692/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13378697