導航:首頁 > 網路數據 > 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相關的資料

熱點內容
壓縮文件怎麼壓縮電影 瀏覽:915
iphone6徹底刪除照片 瀏覽:370
github代碼泄露 瀏覽:943
微軟系統升級win10系統 瀏覽:343
查看電腦微信聊天記錄文件夾 瀏覽:158
手機數據線傳到電腦的視頻在哪裡 瀏覽:918
linux內核消息隊列 瀏覽:702
微信支付提示交易取消 瀏覽:792
ps的配置文件是什麼意思 瀏覽:483
js原生翻頁實現翻頁 瀏覽:554
自控系統招標文件 瀏覽:931
文件共享自動開啟 瀏覽:215
沃爾學院快速升級 瀏覽:90
文件格式化是不是全部內容都沒了 瀏覽:769
一個香蕉圖案的APP是什麼 瀏覽:623
mac文件創建時間 瀏覽:855
東芝筆記本初始密碼 瀏覽:525
安卓手柄改按鍵設置 瀏覽:297
如何應用誇克打開壓縮文件 瀏覽:137
mac網路偏好設置打不開 瀏覽:531

友情鏈接