创建表时控制段延迟分配

问题描述:部署一个应用时,需要创建数千表和索引。如果每个表都分配段,你希望这些语句尽快运行完,不需要为每个表分配初始化空间

解决方案:推迟初始段生成的唯一方法就是使用11gr2的段延迟分配,将出事物理空间分配推迟到第一条记录插入的时候。例子:
create table f_regs(reg_id number,reg_name varchar2(200));
查询表尚未分配任何空间
select count(*) from user_segments where segment_name='F_REGS';
select count(*) from user_extents where segment_name='F_REGS';
插入一条记录
insert into f_regs values(1,'BEIJING');
select count(*) from user_segments where segment_name='F_REGS';
select count(*) from user_extents where segment_name='F_REGS';
在以前的版本,创建一个对象时,会马上分配段
11.2.0.2以后支持分区表

工作原理:
从11gr2,对于本地管理的表空间中创建的未分区堆组织表,初始段的创建被推迟到第一条记录插入表中时。以下情况你可能需要这个特性:
1、安装具有大量表和索引的应用,可以提升安装速度
2、插入第一行数据的时间比以前稍长,因为会分配段。对于大多数应用,影响并不明显

可以将初始化参数deferred_segment_creation设置为false,禁用段延迟分配属性,默认值为true

也可以在创建表是控制段的分配行为,有两个新子句,segment creation immediate和segment creation deferred,例如:
create table f_regs(reg_id number,reg_name varchar2(2000)) segment creation immediate;
初始化蚕食compatible需要在11.2.0.0.0或以上,才能使用这两个子句
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值