導航:首頁 > 網路數據 > oracle大數據update

oracle大數據update

發布時間:2023-08-14 12:38:30

① ORACLE大數據表Update處理

ORACLE中如果表數據量很大(M級或更大) update某個欄位是很慢的(如我的HIS項目中更新歷史業務流程表 萬條記錄 用CURSOR來更新 條MIT一次 花了 天也沒更新完) 後來嘗試過的改進辦法有

把表上的LOGGING取消

把表上的INDEX取消

但是依然很慢 無奈下找到這個

沒陪在這個主題問答里 ORA官方提了一種處理的辦法

利用CREATE table as select xxxxx的辦法來生成一新表T

在T 上創建與目標表一樣的索引

把目標表刪除或RENAME(注意備份以備反悔)

把T 改名成目標表

試了一下 果然非常歲察如地快 我的任務差不多在 Min就完成了

如csywdk table_room是一張大表 要刪除其中bakfwid在noNewYWFW 中的記錄 且要更新bakfwid在imp_table_room中記錄的ROOM_LOC為imp_table_room room_loc:

( )創建新表

create table tmp_new_table_room as

select t ROOM_ID t NEWROOMID t BUILDID t TFH t DKH t BUILD_NO t LAYER_NO t ROOM_NO t ROOM_NAME

decode(t bakfwid null t ROOM_LOC t room_loc)

t ROOM_AREA

t SURTYPE t LAYER_NAME t DEVDEP t CELL t DELFLAG t QXXZ t SJSJLSH t FD t ID t BAKFWID

from csywdk table_room t left join imp_table_room t on t bakfwid=t bakfwid

where not exists(select from noNewYWFW t where t bakfwid=t bakfwid)

( )創建備份表

create table Table_room as

select * from csywdk table_room

( )替換原表

drop table sde table_room

create table sde table_room as

select * from tmp_new_table_room

在這個問答里還提到一句ORA PL/SQL效率相關的話

能用一句語句處理的任務決不乎啟要用多句編程來實現

lishixin/Article/program/Oracle/201311/18980

② 想update一個大表,數據量四千萬左右,如何通過調整Oracle資料庫的某些參數來提高性能,還請各位大蝦指教~

優化update要根據使用方式決定:
1.如果是在線事務系統,那麼建立合適的索引非常專重要,其次通過分屬區技術設立合理的分區鍵也可以大大提升更新前的查找定位效率。

2.如果是後台批量數據分析系統,一次需要更新表中數據的大部分,那麼可以考慮使用臨時表過度,採用insert到臨時表再替換原表的方式代替update操作,這樣效率的提升非常可觀,對系統的壓力也小很多。也可以使用分區技術,對多個分區並行update操作以提升效率,但是系統的壓力也會隨之增大。

③ oracle 大數據量update優化方案

sql 寫法有問題的,抄aa 表讀了兩次。
改寫成如下試試
UPDATE aa

SET TRADE_STATUS = '0'
where exists (
select 1 from bb d where d.id= c.id and d.state= c.state
and d.DAY = '20150503'
) and c.TYPE = '1' AND c.PAYDATE is null;

bb 表上的 id 、 state 和 DAY 上應建組合索引,這樣子查詢效率很高。
aa 表上 TYPE 可以根據數據量考慮是否建索引;如果 TYPE =1 佔比很小 (比如小於 1/30 建索引可能快些,否則 全表掃描 一次讀取多個數據塊;可能全表掃描效率更好)

④ Oracle更新(update)某大數據量的表的最優方法(語句)請教。解決送分。

建議你通過某個條件把這150萬條記錄,分成多個部分,寫個存儲過程,依次執行,執行完一部分就提交一部分。
這樣即即減少了對內存的要求,也防止玩意update出錯,還要花費大量的時間在回滾上。

⑤ oracle幾百萬條數據怎麼update

首先要區分具體情況,雖然表裡有幾百萬幾千萬的數據量,但是update是同時update這幾百萬條的數據呢?還是只更新其中某幾條? 更新的數據量不同,解決方案自然也就有差異。同時update幾百萬數據,這個sql的性能影響在於資料庫會做回滾段,以便異常時rollback。由於數據量大,性能就浪費在回滾段上了。 所以有2個方案供參考:
1. update時 ,禁用回滾段的生成,跟你前面說的nologing應該是一個意思
2. 分批更新,比如每更新10W條數據,就執行一次commit,這樣效率也會比原來的要快。

閱讀全文

與oracle大數據update相關的資料

熱點內容
樂高編程課是學什麼的幼兒園 瀏覽:880
照片刪除了在哪個文件夾 瀏覽:513
電腦怎麼把文件圖片變大 瀏覽:565
紅米1s藍牙能升級嗎 瀏覽:222
javadbx 瀏覽:486
xls文件轉sel文件 瀏覽:300
手機系統老是升級失敗是怎麼回事 瀏覽:456
求個能用的蘋果賬號 瀏覽:419
如何快速把文件夾里重復的歌刪除 瀏覽:606
如何用編程求雞兔同籠 瀏覽:604
word2007圖片選擇 瀏覽:630
特化頭文件 瀏覽:683
資料庫系統概論薩師煊王珊 瀏覽:381
信用玩家app更名為什麼 瀏覽:720
caffe對應的vs版本 瀏覽:205
社交類app廣告語 瀏覽:890
js通過月份獲取月份最後一天 瀏覽:662
mc網易下載的光影在哪個文件夾 瀏覽:427
java如何新建文件 瀏覽:602
手機系統root就不能升級嗎 瀏覽:754

友情鏈接