假設如果我要更新數百萬以上的資料, 我大概會選擇不去』更新』 (update)吧.
我很有可能會用以下的方法:
create table new_table as select 《在此更新》 from old_table;
index new_table (給新的表建立索引)
grant on new table (授權於新的表)
add constraints on new_table (給新的表加上約束)
etc on new_table (加上其它所須的東西在新錶)
drop table old_table (刪除舊的表)
rename new_table to old_table; (給新的表重新命名為舊的表名)
在大多數的操作上, 你可以使用並行查詢(parallel query)並加上nologging的語句來產生非常少重做日誌(redo log) 及 undo log . 這樣的做法可以在很短的時間就可以更新資料了.
這絕對是可施行的方法, 而且也是我們一直在不斷重複使用的方法. 我們其中的乙個應用程式便用於這方法來更新含有數億資料的表.
經我們的計算cursor … for loop 的方式將會需要53.7年來完成資料的更新. 我們採用insert into dummy table的方式並加上nologging的語句的結果使我們在在30分以內就完成了資料更新.
在用nologging的語句, 假若系統中斷, 只要再重新執行更新(update)就可以了.因為所有的資料還在原來的表.
當結束時(insert), 只要把錶dummy(含有以更新的資料)跟原來的表中的分割槽(partition)交換就可以了(譯著注:
Kafka如何實現每秒上百萬的高併發寫入
kafka是高吞吐低延遲的高併發 高效能的訊息中介軟體,在大資料領域有極為廣泛的運用。配置良好的kafka集群甚至可以做到每秒幾十萬 上百萬的超高併發寫入。那麼kafka到底是如何做到這麼高的吞吐量和效能的呢?首先kafka每次接收到資料都會往磁碟上去寫,為了保證資料寫入效能,kafka是基於作業系...
請教提高上百萬行資料insert速度的「經典」方法
有兩個結構相同的表table1,table2 將table1插入到table2中 現在採用兩種方法 1 指定回滾段,回滾段足夠大 set transaction use rollback segment rbs1 insert into table1 nologging select from ta...
提高上百萬行資料insert速度的「經典」方法
提高上百萬行資料insert速度的 經典 方法 有兩個結構相同的表table1,table2 將table1插入到table2中 現在採用兩種方法 1 指定回滾段,回滾段足夠大 set transaction use rollback segment rbs1 insert into table1 ...