程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 實現Oracle數據處理加速的方案

實現Oracle數據處理加速的方案

編輯:Oracle數據庫基礎

以下的文章主要是介紹加速Oracle數據處理的實際操作方法,還有在實際操作中update要比insert要慢的幾點建議的相關內容的描述,如果你對這一技術的實際應用,心存好奇的話,以下的文章將會揭開它的神秘面紗。

一、提高DML操作的辦法:

簡單說來:

1、暫停索引,更新後恢復.避免在更新的過程中涉及到索引的重建.

2、批量更新,每更新一些記錄後及時進行提交動作.避免大量占用回滾段和或臨時表空間.

3、創建一臨時的大的表空間用來應對這些更新動作.

4、批量更新,每更新一些記錄後及時進行提交動作.避免大量占用回滾段和或臨時表空間.

5、創建一臨時的大的表空間用來應對這些更新動作.

6、加大排序緩沖區

  1. alter session set sort_area_size=100000000;  
  2. insert into tableb select * from tablea;  
  3. 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批量拷貝:

  1. set arraysize 20  
  2. set copycommit 5000  
  3. copy from username/passWord@Oraclename append table_name1  
  4. using select * from table_name2;  

(2)、常規插入方式:

  1. insert into t1 select * from t; 

為了提高速度可以使用下面方法,來減少插入過程中產生的日志:

  1. alter table t1 nologging;  
  2. insert into t1 select * from t;  
  3. commit;  

(3)、CTAS方式:

  1. create table t1  
  2. as  
  3. select * from t;  

為了提高速度可以使用下面方法,來減少插入過程中產生的日志,並且可以制定並行度:

  1. create table t1 nologging parallel(degree 2) as select * from t; 

上述的相關內容就是對加速Oracle數據處理的部分內容的描述,希望會給你帶來一些幫助在此方面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved