oracle几百万条数据怎么update

oracle几百万条数据怎么update,第1张

首先要区分具体情况,虽然表里有几百万几千万的数据量,但是update是同时update这几百万条的数据呢?还是只更新其中某几条? 更新的数据量不同,解决方案自然也就有差异。同时update几百万数据,这个sql的性能影响在于数据库会做回滚段,以便异常时rollback。由于数据量大,性能就浪费在回滚段上了。 所以有2个方案供参考:

1. update时 ,禁用回滚段的生成,跟你前面说的nologing应该是一个意思

2. 分批更新,比如每更新10W条数据,就执行一次commit,这样效率也会比原来的要快。

可通过以下方法:

以100条数据为例,如果海量数据可参考。

如test表中有如下数据:

现要将begintime改成当前时间,每10条提交一次。

可用如下存储过程:

declare 

i int--定义变量

v_count int--定义变量

v_loop int--定义变量

begin

 select count(*) into v_count from test--计算表内数据总数

 select ceil(v_count/10) into v_loop from dual--计算需要循环次数

 i:=1--为i赋值

 while i<=v_loop loop--循环退出条件

   update test set begintime=sysdate where begintime is null and rownum<=10--执行更新

   commit--提交

   i:=i+1--i依次加1

 end loop--结束循环

end

1、可以写oracle脚本,从orcl1中将数据备份出来,然后将备份出来的数据导入orcl2中。

2、 程序员:自己用jdbc写一个程序,用Timer类,会定时执行的,从orcl1中将数据查出来,插入orcl2中。如果数据量特别大,oracle数据库支持批量写入,用批量写入功能即可。

3、用DBLINK(oracle一个链接其他oracle库功能),首先在orcl1中创建一个dblink,然后写存储过程,在存储过程中用dblink通道将数据倒过去。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9998350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存