今天有个表有很多数据需要删除,DBA很忙,我就自己动手了
运行后发现数据库的CPU都消耗在了IOWait上面,我还以为是别人也在用这台机器作压力测试呢,东打听西打听没发现问题,结果DBA一个电话打来,说删除数据要这么做:
而我那样做要回滚的数据太多,IO要求很高。
哈哈,又学了一手
delete from crm_customer t where t.corporation_id in (xxx,xxx,xxx,xxx.......xxx);运行后发现数据库的CPU都消耗在了IOWait上面,我还以为是别人也在用这台机器作压力测试呢,东打听西打听没发现问题,结果DBA一个电话打来,说删除数据要这么做:
begin
for i in 90000018 .. 90000151 loop
delete from crm_customer t where t.corporation_id = i;
commit;
end loop;
end;而我那样做要回滚的数据太多,IO要求很高。
哈哈,又学了一手
本文分享了一个关于如何高效地批量删除数据库记录的经验教训。通过对比直接使用DELETE语句与使用循环和commit的方式,揭示了后者能有效减少I/O等待并提高效率。
639

被折叠的 条评论
为什么被折叠?



