情况一:
create tablespace TBS_LJB_B
datafile 'D:\TBS_LJB_B_01.DBF' SIZE 2G;
create table t_b(id int ) tabalespace TBS_LJB_B;
情况二:
create tablespace TBS_LJB_C
datafile 'D:\TBS_LJB_B_01.DBF' SIZE 2G;
autoextend on
uniform size 64K;
create table t_c(id int ) tabalespace TBS_LJB_C;
现在insert into t_b select rownum from dual connect by level<=10000000;
t_c表也一样这样插入数据。
在两种情况中都插入1000W行记录,2G的空间大小足够它们插入,那么加上autoextend on uniform size 64K 有区别吗?
autoextend on uniform size 64K 这语句不是当表空间内存不够时,自动扩展64kb单位的区的意思吗?
在上述这情况下,已定义的表空间已经足够空间插入数据,还需要拓展表空间吗?
我在一本书上看到它们插入数据所用的时间是不相同的,而且拿出来做例子,我觉得很奇怪。。。
求大神指点。。。

------解决方案--------------------
空间足够使用时就不会进行扩展
UNIFORM SIZE就是这个表空间中所有的区间是同样的大小,好处是防止碎片。
数据文件的自动扩展大小有 DBA_DATA_FILES的INCREMENT_BY字段来控制
------解决方案--------------------
搞错了
autoextend是指表空间的自动扩展,当2g表空间不够用时,自动给数据文件分配空间。uniform size是指定segment扩展时分配的extent大小
------解决方案--------------------
这个扩展好像不那么给力,不知道达到百分之几才扩展。
UNIFORM SIZE 是指统一区的大小,也就是每个区含有多少个块。
好像ORACLE 有区的数量的限制。
请班长解释下
------解决方案--------------------
每个extent含有多少个块 = UNIFORM SIZE / 块大小
extent的数量上限取决于Create Table时的storage参数设定,
如果没写的话,则使用TableSpace的默认设定。
而oracle分配空间的最小单位是块(block)
如果是大量数据的插入,我觉得区大小设置的大一些会得到更高的效率。
因为减少了空间分配的频度。
------解决方案--------------------
和百分比没关系。当数据库要创建一个新的extent,而数据文件中最大的自由空间不足以容纳这个extent,则自动扩展
表空间被指定uniform的时候,每个extent的block数会被固定在同样的大小。extent应该没有数量限制吧,我没听说过