一、批量提交

批量提交特点:

占用较少undo,资源(独占锁,undo)快速释放,执行时间长

批量提交适合场景:

在线大批量插入,更新,删除数据

二、BULK COLLECT+FORALL性能提升

1.通过BULK COLLECT加速查询

不管是显示游标还是隐式游标,都可以通过BULK COLLECT在数据库的单次交互中获取多行数据。BULKCOLLECT相对Cursor Loop方式减少了PL/SQL引擎和SQL引擎之间的切换次数,因此也减少了提取数据时的额外开销。

2通过LIMIT rows限制提取的记录数

这种方法会减少对PGA的消耗,避免换页产生

3通过FORALL加速DML

FORALL告诉PL/SQL引擎要先把一个或多个集合的所有成员都绑定到SQL语句中,然后再把语句发送给SQL引擎,如果for ..loop循环,那么会发送n(循环的次数)次,而用Forall,一次行全部发送过去。

三、BULK COLLECT + FORALL批量提交例句

insert

declare

TYPE ARRAY IS TABLE OF big_table%ROWTYPE;

l_data ARRAY;

CURSOR c IS

SELECT * FROM big_table;

BEGIN

OPEN c;

LOOP

FETCH c BULK COLLECT

INTO l_data LIMIT 5000;

FORALL i IN 1 .. l_data.COUNT

INSERT /*+append*/

INTO big_table

VALUES l_data

(i);

commit;

EXIT WHEN c%NOTFOUND;

END LOOP;

CLOSE c;

delete

DECLARE

CURSOR mycursor IS

SELECT rowid FROM t WHERE OO = XX;

TYPE rowid_table_type IS TABLE OF rowid index by pls_integer;

v_rowid rowid_table_type;

BEGIN

OPEN mycursor;

LOOP

FETCH mycursor BULK COLLECT

INTO v_rowid LIMIT 5000;

EXIT WHEN v_rowid.count = 0;

FORALL i IN v_rowid.FIRST .. v_rowid.LAST

DELETE t WHERE rowid = v_rowid(i);

COMMIT;

END LOOP;

CLOSE mycursor;

END;

update

DECLARE

CURSOR mycursor IS

SELECT t_pk FROM t WHERE OO = XX;

TYPE num_tab_t IS TABLE OF NUMBER(38);

pk_tab NUM_TAB_T;

BEGIN

OPEN mycursor;

LOOP

FETCH mycursor BULK COLLECT

INTO pk_tab LIMIT 5000;

EXIT WHEN pk_tab.count = 0;

FORALL i IN pk_tab.FIRST .. v_rowid.LAST

UPDATE t SET name = name || ’bulk’ WHERE t_pk = pk_tab(i);

COMMIT;

END LOOP;

CLOSE mycursor;

END;

forall分批提交oracle,使用BULK COLLECT+FORALL加速批量提交相关推荐

  1. 使用BULK COLLECT+FORALL加速批量提交

    为什么80%的码农都做不了架构师?>>>    一.        批量提交 批量提交特点: 占用较少undo,资源(独占锁,undo)快速释放,执行时间长 批量提交适合场景: 在线 ...

  2. oracle bulk select,批量查询 Oracle的bulk collect用法

    select object_id, object_name, object_type from dba_objects where wner = 'TEST'; 1.在select into语句中使用 ...

  3. PostgreSQL Oracle 兼容性之 - PL/SQL FORALL, BULK COLLECT

    Oracle PL/SQL 开发的童鞋,一定对O家的bulk批量处理的性能很是赞赏吧. 但是PostgreSQL用户请不要垂涎,作为学院派和工业界的一颗璀璨明珠. 开源数据库PostgreSQL,也有 ...

  4. PL/SQL批处理语句:BULK COLLECT 和 FORALL

    PL/SQL程序中运行SQL语句是存在开销的,因为SQL语句是要提交给SQL引擎处理,这种在PL/SQL引擎和SQL引擎之间的控制转移叫做上下文却换,每次却换时,都有额外的开销        请看下图 ...

  5. oracle bulk collect

    碰到的问题,有一个员工表,存储着员工的各种信息. 我要写一个过程,传进去员工的名字,打印该员工的信息. create or replace procedure getInfo(name emp.ena ...

  6. oracle bulk collect into,BULK COLLECT INTO

    下面我们来看两个范例,一个是使用BULK COLLECT的,一个没有: 范例1.使用多次循环来检索并显示数据. 范例2.一次性获取数据,然后再循环显示. 下面是一些有关BULK COLLECT的建议: ...

  7. bulk怎么使用oracle,oracle学习之bulk collect用法

    通过bulk collect减少loop处理的开销,使用Bulk Collect提高Oracle查询效率 Oracle8i中首次引入了Bulk Collect特性,该特性可以让我们在PL/SQL中能使 ...

  8. Oracle学习笔记之五sp1,PL/SQL之BULK COLLECT

    Bulk Collect特性可以让我们在PL/SQL中能使用批查询,批查询在某些情况下能显著提高查询效率. BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQ ...

  9. 深入学习理解(1):java:ExecutorService invokeAll 任务的批量提交invokeAll两种方法的区别

    ExecutorService的invokeAll方法有两种用法: 1.exec.invokeAll(tasks) 2.exec.invokeAll(tasks, timeout, unit) 其中t ...

最新文章

  1. GC rich的区域不易测序的原因
  2. 清华学长教你用Python 批量加水印只需一行命令!
  3. Ubuntu中的颜色选择器实用程序(彩色移液器)[关闭]
  4. 反弹端口 HTTP代理 HTTP隧道技术
  5. 阿里云PyODPS 0.7.18发布,针对聚合函数进行优化同时新增对Python 3.7支持
  6. linux内核与设备驱动,第二章 Linux内核与设备驱动程序
  7. C#完美任意设置webBrowser框架默认的IE内核版本
  8. Jmeter笔记(2)插件下载与安装
  9. tablayout支持改变选中文字大小,支持左右滑动,支持viewpager,支持三角可移动指示器...
  10. winpe镜像文件iso下载_精品软件:最喜爱的也是最纯净WinPE-微PE工具箱
  11. 【BZOJ4008】【HNOI2015】亚瑟王 [期望DP]
  12. mac 卸载ssh 重新安装mysql,linux下彻底卸载MySQL
  13. Extjs自定义日期控件的显示格式
  14. Android 9.0的One UI系统,三星S9/S9+更新One UI 安卓9.0已正式推送
  15. 视频教程-Excel项目实战从入门到精通(兼容2007、2010、2013、2016)-Office/WPS
  16. “衣衫合身定制”获数百万元天使轮投资,在线定制男性专属衬衫
  17. 无处不在的微创新——验证码的故事
  18. 两条线段的交点的计算
  19. Android Studio WiFi 之 获取 WiFi 名称、IP、Mac
  20. 解读:机器学习预测收益模型应该采取哪种度量指标

热门文章

  1. 鲲鹏服务器拦截系统调用,鲲鹏服务器unicfg工具适配OpenEuler 20.03问题
  2. Error: “incorrect inclusion of a cudart header file”
  3. Udacity机器人软件工程师课程笔记(六)-样本搜索和找回-基于漫游者号模拟器-优化和样本找回
  4. JavaScript原生代码处理JSON的一些高频次方法合集
  5. Codeforces.487C.Prefix Product Sequence(构造)
  6. CentOS7.4-btrfs管理及使用
  7. hdu 2199 Can you solve this equation? 二分
  8. [转]单点登录原理与简单实现
  9. sqlserver导入excel的电话号码(身份证)变为科学计数解决方式
  10. 某大型银行深化系统之二十:异常规范