提高oracle处理效率.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
提高oracle处理效率 一、提高DML操作的办法: 一、提高DML操作的办法:   简单说来:   1、暂停索引,更新后恢复.避免在更新的过程中涉及到索引的重建.   2、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.   3、创建一临时的大的表空间用来应对这些更新动作.   4、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.   5、创建一临时的大的表空间用来应对这些更新动作.   6、加大排序缓冲区   alter session set sort_area_size=100000000;   insert into tableb select * from tablea;   commit;   如果UPDATE的是索引字段,就会涉及到索引的重建,暂停索引不会提高多少的速度,反而有可能降低UPDATE速度,   因为在更新是索引可以提高数据的查询速度,重建索引引起的速度降低影响不大。   ORACLE优化修改参数最多也只能把性能提高15%,大部分都是SQL语句的优化!   update总体来说比insert要慢 :   几点建议:   1、如果更新的数据量接近整个表,就不应该使用index而应该采用全表扫描   2、减少不必要的index,因为update表通常需要update index   3、如果你的服务器有多个cpu,采用parellel hint,可以大幅度的提高效率   另外,建表的参数非常重要,对于更新非常频繁的表,建议加大PCTFREE的值,以保证数据块中有足够的空间用于UPDATE, 从而降低CHAINED_ROWS。   二、各种批量DML操作:   (1)、oracle批量拷贝:   set arraysize 20   set copycommit 5000   copy from username/password@oraclename append table_name1   using select * from table_name2; (2)、常规插入方式:   insert into t1 select * from t;   为了提高速度可以使用下面方法,来减少插入过程中产生的日志:   alter table t1 nologging;   insert into t1 select * from t;   commit;   (3)、CTAS方式:   create table t1   as   select * from t;   为了提高速度可以使用下面方法,来减少插入过程中产生的日志,并且可以制定并行度:   create table t1 nologging parallel(degree 2) as select * from t;   (4)、Direct-Path插入:   insert /*+append*/ into t1 select * from t;   commit; 为了提高速度可以使用下面方法,来减少插入过程中产生的日志:   alter table t1 nologging;   insert /*+append*/ into t1 select * from t;   Direct-Path插入特点:   1、 append只在insert … select …中起作用,像insert /*+ append */ into t values(…)这类的语句是不起作用的。在update、delete操作中,append也不起作用。   2、 Direct-Path会使数据库不记录直接路径导入的数据的重做日志,会对恢复带来麻烦。   3、 Direct-Path直接在表段的高水位线以上的空白数据块中写数据,不会重用高水位线以下的空间,会对空间的使用造成一定的浪费,对查询的性能也会造成一定的影响。而常规插入会优先考虑使用高水位线之下有空闲空间存在的数据块。因此理论上Direct-Path插入会比常规插入速度更快,因为 Direct-Path直接使用新数据块,而常规插入要遍历freelist获取可用空闲数据块,如果同 nologging 配合,这种速度优势会更加明显。   4、 以append方式插入记录后,要执行commit,才能对表进行查询。否则会出现错误:ORA-12838: 无法在并行模式下修改之后读/修改对象。   5、 用append导入数据后,如果没有提交或者回滚,在其他会话中任何对该表的DML都会被阻塞(不会报错),但对该表的查询可以正常执行。   6、在归档模式下,要把表设置为nologging,然后以append方式批量添加记录,才会显着减少redo数量。在非归档模式

文档评论(0)

sy78219 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档