1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

实现Oracle数据处理加速的方案

2022-11-26 | 数据库 | admin | 521°c
A+ A-

以下的文章主要是介绍加速Oracle数据处理的实际操作方法,还有在实际操作中update要比insert要慢的几点建议的相关内容的描述,如果你对这一技术的实际应用,心存好奇的话,以下的文章将会揭开它的神秘面纱。

一、提高DML操作的办法:

简单说来:

1、暂停索引,更新后恢复.避免在更新的过程中涉及到索引的重建.

2、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.

3、创建一临时的大的表空间用来应对这些更新动作.

4、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.

5、创建一临时的大的表空间用来应对这些更新动作.

6、加大排序缓冲区

altersessionsetsort_area_size=100000000; 
insertintotablebselect*fromtablea; 
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批量拷贝:

setarraysize20 
setcopycommit5000 
copyfromusername/password@Oraclenameappendtable_name1 
usingselect*fromtable_name2; 

(2)、常规插入方式:

insertintot1select*fromt;

为了提高速度可以使用下面方法,来减少插入过程中产生的日志:

altertablet1nologging; 
insertintot1select*fromt; 
commit; 

(3)、CTAS方式:

createtablet1 
as 
select*fromt; 

为了提高速度可以使用下面方法,来减少插入过程中产生的日志,并且可以制定并行度:

createtablet1nologgingparallel(degree2)asselect*fromt;

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11789.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。