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

熱點內容
如何檢查無線網路驅動是否正常 瀏覽:468
百度網盤來自分享的文件在哪裡 瀏覽:127
如何發視頻到騰訊視頻文件夾里 瀏覽:510
微信打開cad外部文件找不到 瀏覽:882
平板可以打開各種文件後綴的軟體 瀏覽:531
蘋果微信文件怎麼全選 瀏覽:749
手機里之前打開過的文件在哪裡找 瀏覽:685
cad能看word文件嗎 瀏覽:719
12306火車票系統後台資料庫 瀏覽:570
js翻譯德語 瀏覽:33
從哪裡可以下載a股的數據 瀏覽:437
邏輯文件名和物理文件名關系 瀏覽:66
怎麼查一個網站的外鏈 瀏覽:675
linux下db2安裝時版本選擇 瀏覽:738
匯編編程用哪個軟體 瀏覽:486
仙樂下的歌在文件管理哪裡 瀏覽:477
115網盤解析工具2014 瀏覽:371
內圓弧銑刀怎麼編程 瀏覽:410
記事本文件轉word格式對齊 瀏覽:300
excel刪除恢復文件 瀏覽:290

友情鏈接