暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 巨大的数据插入。从视野到表。性能问题

ASKTOM 2020-05-16
3628

问题描述

嗨,汤姆,
我需要从视图中插入数据 (平均1700万条记录) 到一个有几个索引的表。

流程是这样的。

对于我来说 (从表格中选择一些东西)
循环
view_sql = '从表中选择xxx...哪里... ';

如果 () 则
视图 _ sql = 视图 _ sql | | '和...';
其他
视图 _ sql = 视图 _ sql | | '和 .....';
如果结束;

立即执行 “插入表” | | view_sql; -只需此步骤的答案。如何让这个更快?
end 循环;

专家解答

两件事中的一件 (或两件事) 会导致你的减速:

1) 插件
2) 查询

您可以通过仅输出 “view_sql” 并在SQL Plus中运行一些示例来测试查询是否隔离。

一个好的技术是使用gather_plan_statistics提示来评估减速的位置。这里有一个例子

https://asktom.oracle.com/pls/asktom/asktom.search?tag=what-is-efficient-way-to-paginate-on-the-large-table

如果查询速度快且插入速度慢,则通过dbms_monitor.session_trace_enable (waits =>true) 或通过v $ session_event查看会话等待统计信息,以查看插入被阻碍的位置。常见的原因是

-表上的触发器
-表上有很多索引

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论