大表建立索引

大表建立索引注意事项:

  • 表空间和磁盘空间是否足够
  • 表在建立索引的时候会进行加锁操作,所以建立索引应在业务空闲的时候进行。

性能调整方面注意事项:

  • 物理上,应当尽量把索引与数据分散到不同的磁盘上
  • 逻辑上,数据表空间和索引表空间应该分开
  • 调整排序区的大小:建立索引的时候对数据进行大量的排序操作,需要调整排序区的大小。9i之后,如果初始化参数workarea_size_policy的值设置为true,则排序区从pga_aggregate_traget里自动分配获得。
  • 建立索引的时候,可以加上nologging选项,减少在建立索引过程总产生的大量redo,从而提高执行速度。
  • 让尽量可能多的源表进入buffer cache,使用cache和full hint对源表作FTS,让它尽可能的出现在LRU的MRU一端。

例子:

>alter session set db_file_multiblock_read_count = 128;

注:

  • 初始化参数db_file_multiblock_read_count影响oracle在执行全表扫描时一次读取的block的数量;
  •      db_file_multiblock_read_count的设置要受OS最大IO能力影响,也就是说,如果你系统的硬件IO能力有限,即使设置再大的db_file_multiblock_read_count也是没有用的。目前Oracle所支持的最大db_file_multiblock_read_count 值为128.
  •      在Oracle10gR2之后的版本(10gR2和11g)中,Oracle数据库已经可以根据系统的IO能力以及Buffer Cache的大小来动态调整该参数值,Oracle建议不要显式设置该参数值。
  • >show parameter multi     (系统值为73)

>select /*+ cache(t) full(t) */ count(*) from scott.t;

>alter session set sort_area_size = 104857600;

>create index ind_t on scott.t(id) tablespace users

  pctfree 5 initrans 4 maxtrans 255 nologging storage(initial 104857600) parallel 4 online;

>alter index ind_t logging;

>alter index ind_t parallel 1;

>alter session set db_file_multiblock_read_count = 16;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值