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

熱點內容
力控轉發數據客戶端模式如何建立 瀏覽:200
怎麼樣讓自己的網站不被別人看到 瀏覽:711
編程擴展效果如何 瀏覽:335
榮耀暢玩手環同步qq 瀏覽:475
怎麼向sql中添加資料庫 瀏覽:596
錄歌失敗重啟app什麼意思 瀏覽:522
壓縮文件包怎麼在微信發送 瀏覽:432
mysql資料庫怎麼插入時間值 瀏覽:191
微信視頻不能轉發朋友圈 瀏覽:596
影視後期的app有哪些 瀏覽:956
電子保單數據出錯什麼意思 瀏覽:368
如何以文件下載音樂 瀏覽:438
計算機網路章節練習 瀏覽:999
單片機的外部中斷程序 瀏覽:48
表格批量更名找不到指定文件 瀏覽:869
js的elseif 瀏覽:584
3dmaxvray視頻教程 瀏覽:905
imgtool工具中文版 瀏覽:539
java幫助文件在哪裡 瀏覽:965
win10切換輸入語言 瀏覽:696

友情鏈接