資料割接效率提公升常用套路

2022-09-13 15:24:12 字數 1207 閱讀 8091

1:歸檔與非歸檔

在割接前將資料改為非歸檔模式,在割接後再改回來。同時做全備。

改為非歸檔模式會大大減少寫日誌的開銷。

2:主外來鍵、索引

在割接前,需要先失效主外來鍵/索引或者直接drop掉。

割接後再恢復,回覆索引,大一點的表並行建立,再取消並行。

3:空間換時間

a:資料量太大時,應該分模處理。

b:頻繁關聯的表,應該建成中間表。

c:中間錶太大時,應該進行拆分。

d:中間表建好後,進行表分析。

e:對於11.2以下版本

from table 有用。

g:不要一條一條commit

!會把資料庫撐很大很大!5並行

並行並不是越大越好,在並行開大時,容易造成並行鎖,並影響割接效率。實際並行數量不應該超過資料庫服務的cpu核數。

批量割接同時割接多個模和多個表時,完全可以不用並行。

6:seqs 不能不加cache,而且cache要大一點,割接完之後注意改回來。

7:游標與直接insert

大資料量操作,應該盡量避免:insert into a select * from b 這種方式,因為容易引發undo空間不足,並且無法評估效率,也無法控制進度。

不如直接用游標。

8:游標效率

顯示游標:

cursor

cur_2 is select a.cust_name from ea_cust.cust_info a;

隱式游標

cur_2 in (select

c.cust_name from ea_cust.cust_info c) 

bulk方式

fetch cur_test bulk collect into

wxk_test_data limit 100;

bulk方式與隱式游標效率相當(略大於隱式游標)。

而隱式游標效率明顯大於顯式游標。

9:繫結變數

當sql為動態sql時,儲存過程也會存在繫結變數問題。

當使用動態sql時,類似如下語句是不合適的:

sql= 『insert into xx values (『||v_id1||』)』

但是insert into xx values (v_id1)這種sql是合適的,資料庫自動會繫結變數。

11:在後台用shell拉起長時間執行的儲存過程,或者用job。而不是直接使用plsql執行。

提公升MySQL查詢效能常用套路

前言 我們查詢資料庫通常會多表關聯,當資料量大時,很多時候我們可以多表查詢分成多次 sql 查詢,來提高效能。如 select from tag join tag post on tag post.tag id tag.id join post on tag post.post id post.id...

使用webflux提公升資料匯出效率

本文主要研究一下如何使用webflux提公升資料匯出效率 public responseentitydownloadinoldways public byte exportbytes int datarow catch interruptedexception e return output.tos...

Linux下常用的查詢命令,提公升效率

前置條件 建立乙個1g的檔案 fallocate l 1g istester.com.ini 找出當前目錄,及其子目錄中,大於100m的所有檔案 find type f size 100m 大於1g find type f size 1g 延伸,查詢istester目錄下,兩層目錄內 包含2層子資料...