请问怎么提升 oracle 大量数据删除插入的并行操作性能.

loveyly 2008-12-06 04:08:41
请大家看看是否有什么方案解决这个问题:

系统被多个线程处理数据, 其中一部分是删除大量数据, 一部分是往数据库中添加大量数据.
目前看来, 相互的影响太大(几十倍的性能降低), 请问这样的并行处理的一般优化方案是什么?

谢谢!
...全文
1174 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
w2jc 2008-12-12
  • 打赏
  • 举报
回复
不知道大量删除和插入数据的时候是否还有查询,
如果没有太多查询操作的话,可能看看索引,
尽量减少索引,这样会大大加快删除和插入的速度,
否则每删除和插入一条记录,数据库都要更新相应的索引。
lwei_998 2008-12-11
  • 打赏
  • 举报
回复
create or replace procedure delBigTab
(
p_TableName in varchar2,
p_Condition in varchar2,
p_Count in varchar2
)
as
pragma autonomous_transaction;
n_delete number:=0;
begin
while 1=1 loop
EXECUTE IMMEDIATE
'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'
USING p_Count;
if SQL%NOTFOUND then
exit;
else
n_delete:=n_delete + SQL%ROWCOUNT;
end if;
commit;
end loop;
commit;
DBMS_OUTPUT.PUT_LINE('Finished!');
DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');
end;
lwei_998 2008-12-11
  • 打赏
  • 举报
回复
批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交
microsoft_fly 2008-12-11
  • 打赏
  • 举报
回复
能否把表结构和语句K出来
loveyly 2008-12-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caoleione 的回复:]
设置并行查询的相关系统参数如PARALLEL_AUTOMATIC_TUNING、PARALLEL_EXECUTION_MESSAGE_SIZE
修改表的并行参数设置如ALTER TABLE employee PARALLEL;
[/Quote]

能介绍一下这些参数的原理么?
谢谢!
wffffc 2008-12-10
  • 打赏
  • 举报
回复
这要看你的问题出在那里了
caoleione 2008-12-09
  • 打赏
  • 举报
回复
设置并行查询的相关系统参数如PARALLEL_AUTOMATIC_TUNING、PARALLEL_EXECUTION_MESSAGE_SIZE
修改表的并行参数设置如ALTER TABLE employee PARALLEL;
blueterry 2008-12-09
  • 打赏
  • 举报
回复
如1楼所说,关闭日志可以提高数据插入、删除数据

关键的是优化系统,尽量避免同时多线程对同一表的大量删除和插入。

如果插入删除很频繁不可避免,可以考虑用内存表在高峰的时候做临时存储,等待插入删除,
等高峰过去再将内存表写入真正的数据库表。
范佩西_11 2008-12-09
  • 打赏
  • 举报
回复
alter table tablename nologging;

试一下。

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧