【发布时间】:2013-10-15 19:02:26
【问题描述】:
我创建了一个需要大量时间和资源才能完成的程序。 我的数据库管理员不得不终止该程序,因为它大大降低了 Oracle 服务器的速度,并且公司中的所有其他用户都无法工作。
我的程序是这样的:
procedure my_proc IS
cursor c IS (SELECT id FROM very_larg_table);
row_ c%rowtype;
begin
open c;
fetch c into row_;
exit when c%notfound;
run_a_task_that_takes_0.2_of_a_second_per_run(row_.id);
commit;
end loop;
close c;
end;
very_large_table 有大约 25 万行。将其乘以 0.2 秒,您将获得 14 小时的执行时间。
此任务只能运行一次。它应该根据许多条件构建额外的数据。运行后,这些数据将在可接受的时间内为每条新记录实时构建,并且不会再在历史上重新构建。
但是这个任务必须在我们的数据库上运行。我怎样才能减慢它的速度,让它在 24 小时内执行,但对整个系统的影响更小?
【问题讨论】:
标签: performance oracle plsql