append与nologging的正确配合才能提高查询效率



使用append hint称为直接路径加载插入,数据不经过Buffer cache而是直接插到数据文件中。
具体的原理是:使用append hint则系统不查找freelist链表中的空闲块(freeblock),而是直接在segment高水位(HWM)以上插入数据,省略了freeblock的查找时间,因此速度快,但是由于总是在HWM以上插数据,导致了空间的浪费,对于频繁修改的数据不建议采用这种方式。
在开发以及运维过程中,常常要配合nologging提高查询速度,减少redo的产生,从而避免log file sync带来的性能下降问题。


以下我采用实验的方式验证append与nologgingde的作用:
服务器: Red Hat Enterprise Linux Server release 5.8 (Tikanga)
数据库: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production


实验一:append hint方式将分配新的extent造成空间浪费


SQL> create table AP01 as select * from  dba_objects;   //创建基础表AP01
Table created


SQL> select segment_name,extent_id,bytes  from user_extents where segment_name='AP01';  //查看AP01分配的extent共有24个
SEGMENT_NAME                                                                      EXTENT_ID      BYTES
-------------------------------------------------------------------------------- ---------- ----------
AP01                                                                                      0      65536
AP01                                                                                      1      65536
AP01                                                                                      2      65536
AP01                                                                                      3      65536
AP01                                                                                      4      65536
AP01                                                                                      5      65536
AP01                                                                                      6      65536
AP01                                                                                      7      65536
AP01                                                                                      8      65536
AP01                                                                                      9      65536
AP01                                                                                     10      65536
AP01                                                                                     11      65536
AP01                                                                                     12      65536
AP01                                                                                     13      65536
AP01                                                                                     14      65536
AP01                                                                                     15      65536
AP01                                                                                     16    1048576
AP01                                                                                     17    1048576
AP01                                                                                     18    1048576
AP01                                                                                     19    1048576
SEGMENT_NAME                                                                      EXTENT_ID      BYTES
-------------------------------------------------------------------------------- ---------- ----------
AP01                                                                                     20    1048576
AP01                                                                                     21    1048576
AP01                                                                                     22    1048576
AP01                                                                                     23    1048576
24 rows selected


SQL> delete from  AP01;    //删除表中的数据
75224 rows deleted
SQL> 
SQL> commit;
Commit complete
SQL> select count(*) from  AP01;
  COUNT(*)
----------
         0
SQL> select segment_name,extent_id,bytes  from user_extents where segment_name='AP01'; //
SEGMENT_NAME                                                                      EXTENT_ID      BYTES
-------------------------------------------------------------------------------- ---------- ----------
AP01                                                                                      0      65536
AP01                                                                                      1      65536
AP01                                                                                      2      65536
AP01                                                                                      3      65536
AP01                                                                                      4      65536
AP01                                                                                      5      65536
AP01                                                                                      6      65536
AP01                                                                                      7      65536
AP01                                                                                      8      65536
AP01                                                                                      9      65536
AP01                                                                                     10      65536
AP01                                                                                     11      65536
AP01                                                                                     12      65536
AP01                                                                                     13      65536
AP01                                                                                     14      65536
AP01                                                                                     15      65536
AP01                                                                                     16    1048576
AP01                                                                                     17    1048576
AP01                                                                                     18    1048576
AP01                                                                                     19    1048576
SEGMENT_NAME                                                                      EXTENT_ID      BYTES
-------------------------------------------------------------------------------- ---------- ----------
AP01        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值