數據處理的三種方式

1、單條SQL語句一次性的執行數據處理數據庫

2、採用遊標一條一條的逐步循環處理服務器

3、採用OracleBULK COLLECT程序批量處理性能

 

通常性的原則是:測試

若是能夠經過單條SQL實現,並且單條SQL語句的數據處理量不是很是龐大,則採用單條SQL一次性執行的方法是最好的,由於這時打開數據庫的次數和處理數據的次數都最少,操做簡單並且性能良好,那麼,這個數據量如何把握呢,最好的辦法是嘗試,看看在當前數據庫服務器資源肯定狀況下,多少數據執行起來效率最好,經驗上來說,數萬條數據用單條SQL都是沒有問題的,超過了10萬,就須要斟酌是否會消耗過多內存或者是回滾段。spa

採用遊標逐條處理數據的方法,是在單條SQL語句沒法實現數據處理狀況下的最經常使用方法,在沒必要要經過批處理來提升性能的狀況下,咱們沒有必要摒棄這種方法,而所有使用批處理。那麼,在什麼狀況下使用批處理,如何使用呢內存

1、在使用批處理效果很好時再使用它資源

有幾層含義,首先,咱們要在處理的數據量比較龐大,使用批處理能夠提升性能的狀況下才使用,至少,這個龐大的數據,是要數萬行以上的;其次,批量處理,也包含分批份量的意思,由於批量,並不意味着更多就表示更好,應該儘可能作到平衡,咱們能夠結合數據庫的內存等資源狀況,測試瞭解系統的吞吐量,若是一次處理50條數據,一次處理200條數據以及一次處理500條數據等幾種狀況相比,一次處理200條數據的性能最好,說明咱們的系統在批次處理200條數據的資源耗用時達到良好平衡。table

2、在使用ETL數據處理的狀況下,推薦使用ast

批量處理的一種主要應用是ETL數據處理,能夠經過BULK COLLECT批量實現數據的抽取,轉換和裝載操做,即便這時須要增長稍多一些的代碼,從提升性能和資源耗費等方面來說,也是很是值得的,此時數據庫會生成更少的重作數據,產生更少的內部鎖,於是節省ETL操做的時間。效率

 

forall:

forall i in 1..100--指明循環器的上限和下限

insert into table_name()values();

forall i in indices of row_num_tab--引用特定集合中單個元素的下標

insert into table_name()values();

相關文章
相關標籤/搜索