Oracle數(shù)據(jù)處理中的兩個操作方案
本文主要是通過介紹加速Oracle數(shù)據(jù)處理的相關實際應用代碼來引出加速Oracle數(shù)據(jù)處理 ,如果你在加速Oracle數(shù)據(jù)處理 存在不解之處時,你不妨瀏覽下面的文章,希望你能從中獲得自己想要的東西。
一、提高DML操作的辦法:
簡單說來:
1、暫停索引,更新后恢復.避免在更新的過程中涉及到索引的重建.
2、批量更新,每更新一些記錄后及時進行提交動作.避免大量占用回滾段和或臨時表空間.
3、創(chuàng)建一臨時的大的表空間用來應對這些更新動作.
4、批量更新,每更新一些記錄后及時進行提交動作.避免大量占用回滾段和或臨時表空間.
5、創(chuàng)建一臨時的大的表空間用來應對這些更新動作.
6、加大排序緩沖區(qū)
- alter session set sort_area_size=100000000;
- insert into tableb select * from tablea;
- commit;
如果UPDATE的是索引字段,就會涉及到索引的重建,暫停索引不會提高多少的速度,反而有可能降低UPDATE速度,
因為在更新是索引可以提高數(shù)據(jù)的查詢速度,重建索引引起的速度降低影響不大。
ORACLE優(yōu)化修改參數(shù)最多也只能把性能提高15%,大部分都是SQL語句的優(yōu)化!
update總體來說比insert要慢 :
幾點建議:
1、如果更新的Oracle數(shù)據(jù)量接近整個表,就不應該使用index而應該采用全表掃描
2、減少不必要的index,因為update表通常需要update index
3、如果你的服務器有多個cpu,采用parellel hint,可以大幅度的提高效率
另外,建表的參數(shù)非常重要,對于更新非常頻繁的表,建議加大PCTFREE的值,以保證Oracle數(shù)據(jù)塊中有足夠的空間用于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)、常規(guī)插入方式:
- insert into t1 select * from t;
為了提高速度可以使用下面方法,來減少插入過程中產(chǎn)生的日志:
- alter table t1 nologging;
- insert into t1 select * from t;
- commit;
(3)、CTAS方式:
- create table t1
- as
- select * from t;
為了提高速度可以使用下面方法,來減少插入過程中產(chǎn)生的日志,并且可以制定并行度:
- create table t1 nologging parallel(degree 2) as select * from t;
上述的相關內(nèi)容就是對加速Oracle數(shù)據(jù)處理的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】