糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > mysql大表更新_大表的update更新

mysql大表更新_大表的update更新

时间:2019-04-11 05:58:20

相关推荐

mysql大表更新_大表的update更新

因为业务需要对一张大表的一个列值进行update更新,表中有数据一亿多条,为了更新这一亿多条数据,我做了一下尝试,给各位同学留个前车之鉴。

表名:test

列名:name varchar2(50)

方法一:

直接对大表update,

语句:update test set name=replace(name,chr(13),\);

结果:执行12个小时候,sql仍未执行完成,于是在执行12个小时之后,我把这个交易kill 了;

后果:最终耗费了48小时来完成数据回滚,给数据库带来了严重的的压力,同时造成了大量的锁等待,结局很悲惨。

方法二:

吸收了方法一的教训,一次修改的话,undo数据太大,对数据库性能有严重的影响,书写了一个存储过程,每一万条数据提交一次,同时新建一张表t1和sequence sq_test,记录已经修改的条数,sql如下:

CREATE OR REPLACE PROCEDURE UpdateBigTableRecord AS

CURSOR c_cursor IS

select rowid from test;

v_rowid varchar(30);

x number := 0;

y number(30);

BEGIN

OPEN c_cursor;

LOOP

FETCH c_cursor

如果觉得《mysql大表更新_大表的update更新》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。