Oracle如何在億級記錄表中建立索引

2021-06-16 23:29:38 字數 1096 閱讀 6788

1.前階段做了個專案,需要將生產系統中的乙個資料,匯出到備份機中,這個表近40個字段,14億條的資料。

資料抽取用的是開源的etl工具,比較了一下,還是先導出txt檔案,在匯入到備份機中,速度最快。

2.下面對匯入資料時遇到的問題進行分析:

問題一、不要自動建立表空間。

因表空間較大,一開始只建立了乙個表空間檔案,導致表空間全使用後,不能自動擴充套件。建立多個表空間檔案,檔案大小最好不起過25g。設定大的表空間比設定小的自增的表空間好處是,表空間在磁備扇區連續,查詢效能較高。

問題二、引數調整

1.在workarea_size_policy=auto的情況下,改pga_aggregate_target=2048m。對於序列操作,乙個session能使用的pga=min(5%pga_aggregate_target,100mb),這樣可以使得pga用到最大的值:

alter system set pga_aggregate_target=2048m;

2.使用並行引數,4個cpu, 可以用parallel 2 ,最多占用2個cpu, 正常情況下沒問題(前提是其他應用沒有佔超過2個cpu的資源)

3. nologging, 絕對應該使用,會使速度大幅上公升。(減少大量redo log)

4. pga, 普通的auto pga最大才100m, 顯然沒有達到最好效能,應該使用manual pga

alter session set workarea_size_policy=manual;

alter session set hash_area_size=100000; -- hash_area_size 預設情況下會自動根據ort_area_size*2來調,導致sort_area_size不能超過1g, 手動設了就沒問題了。

alter session set sort_area_size=2000000000; -- 在系統可用記憶體足夠的情況下,最大可以到2g

5. 設定高一點的db_file_multiblock_read_count 也有利於提高i/o效能。保證足夠大的db_cache_size可以避免free_buffer_wait的出現

6.建立完成後分析索引.

7. 可以通過v$session_longops 來監視進度

如何在Oracle中建立表空間

在cmd命令列中輸入一下命令即可連線oracle資料庫進行相關操作。sqlplus as sysdba格式 create tablespace 表間名 datafile 資料檔名 size 表空間大小 create tablespace qing logging size 200m autoexte...

oracle上億條記錄大表delete

delete use hash a,b parallel a,15 from tabacca where exists select 1 from temptablea b where a.id b.id and b.type 1 可以試試多個job分工,同時進行。比如開10個job,每個job分十...

Oracle 刪除表中記錄 如何釋放表及表空間大小

1.檢視乙個表所佔的空間大小 select bytes 1024 1024 mb table size u.from user segments u where u.segment name jk test 2.檢視乙個表空間所佔的實際大小 select sum bytes 1024 1024 mb...