使用Bulk Binding批量绑定的模式高效处理ORACLE大量数据
用批量绑定(bulk binding)的方式。当循环执行一个绑定变量的sql语句时候,在PL/SQL 和SQL引擎(engines)中,会发生大量的上下文切换(context switches)。使用bulk binding,能将数据批量的从plsql引擎传到sql引擎,从而减少上下文切换过程,提升效率。
在Oracle使用过程中经常会遇到需要插入大量数据的情况,这种情况下就可以使用Bulk Binding插入数据。
Oracle PL/SQL 优化与调整 -- Bulk 说明
参考代码:
DECLARE
-- Local variables here
l_date_f DATE;
l_date_t DATE;
TYPE t_event_id IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
l_event_id t_event_id; CURSOR c_data(p_date_f DATE, p_date_t DATE) IS
SELECT xe.event_id,
xe.event_date,
xe.application_id,
xe.process_status_code
FROM xla_events xe
WHERE xe.application_id = 707
AND xe.process_status_code <> 'P'
AND xe.event_date > p_date_f
AND xe.event_date <= p_date_t; TYPE t_tab IS TABLE OF c_data%ROWTYPE;
l_event t_tab;
BEGIN
-- Test statements here
l_date_f := to_date('2008/01/01', 'yyyy/dd');
l_date_t := to_date('2017/05/31', 'yyyy/dd'); FOR i IN 1 .. (l_date_t - l_date_f) LOOP
--dbms_output.put_line('l_date_f:'||to_char(l_date_f+i-1,'yyyy/dd'));
--dbms_output.put_line('l_date_t:'||to_char(l_date_f+i,'yyyy/dd')); OPEN c_data(l_date_f + i - 1, l_date_f + i);
LOOP
FETCH c_data BULK COLLECT
INTO l_event LIMIT 10000;
--dbms_output.put_line(l_event.count);
EXIT WHEN l_event.count = 0;
FORALL j IN 1 .. l_event.count
INSERT INTO xla_events_bak
(application_id,
event_id,
event_date,
event_status_code,
process_status_code)
VALUES
(l_event(j).application_id,
l_event(j).event_id,
l_event(j).event_date,
l_event(j).event_status_code,
l_event(j).process_status_code); FORALL j IN 1 .. l_event.count
UPDATE xla_events xe
SET xe.process_status_code = 'P', xe.event_status_code = 'P'
WHERE xe.event_id = l_event(j).event_id
AND xe.application_id = l_event(j).application_id; COMMIT;
END LOOP;
CLOSE c_data;
END LOOP;
END;
使用Bulk Binding批量绑定的模式高效处理ORACLE大量数据的更多相关文章
- 重新想象 Windows 8 Store Apps (55) - 绑定: MVVM 模式
[源码下载] 重新想象 Windows 8 Store Apps (55) - 绑定: MVVM 模式 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 绑定 通过 M ...
- 深入浅出WPF-06.Binding(绑定)01
Binding(绑定) 先上图,再解释 针对这个图,我们先来说说什么是Binding. Binding就是一个桥梁,建立在数据和UI之间的桥梁.既然是数据驱动,那么我们就把数据称之为"源&q ...
- jquery批量绑定click事件
jquery批量绑定click事件: var selects = $(".public_select dd ul li"); debugger; /*$(".public ...
- 数据绑定(三)为Binding指定绑定源的几种方法
原文:数据绑定(三)为Binding指定绑定源的几种方法 Binding的源是数据的来源,所以,只要一个对象包含数据并能通过属性把数据暴露出来,它就能当作Binding的源来使用,常用的办法有: 一. ...
- 深入浅出WPF-06.Binding(绑定)02
Binding对数据的校验和转换 1)数据校验,通过Binding的ValidationRules属性(Collection类型)进行校验.可以设置多个数据校验条件. <Slider Margi ...
- FoxOne---一个快速高效的BS框架--数据访问(Dao)
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- 使用pandas导出PostgreSQL 模式下的所有表数据并保存
PostgreSQL PostgreSQL 是一个非常强大的数据库,它是一个免费的对象-关系数据库服务器(数据库管理系统).PostgreSQL支持大部分 SQL 标准, 在语句上也有很大的相似的地方 ...
- 测试Oracle 11gr2 RAC 非归档模式下,offline drop数据文件后的数据库的停止与启动测试全过程
测试Oracle 11gr2 RAC 非归档模式下,offline drop数据文件后的数据库的停止与启动测试全过程 最近系统出现问题,由于数据库产生的日志量太大无法开启归档模式,导致offline的 ...
- [SignalR]SignalR与WCF双工模式结合实现服务端数据直推浏览器端
原文:[SignalR]SignalR与WCF双工模式结合实现服务端数据直推浏览器端 之前开发基于WinForm监控的软件,服务端基于Wcf实现,里面涉及双工模式,在客户端里面,采用心跳包机制保持与服 ...
随机推荐
- Class<T>
首先,什么是类类型? 可见: https://www.cnblogs.com/yanze/p/9717658.html Class<T>即T的类类型 如何获取Class<T>? ...
- 20145104张家明 《Java程序设计》第7周学习总结
20145104张家明 <Java程序设计>第7周学习总结 教材学习内容总结 第13章 简单认识时间和日期 -时间的度量:GMT.UT.TAI.UTC.Unix.epoch. -UTC:保 ...
- STM32.SPI(25Q16)
1.首先认识下W25Q16DVSIG, SOP8 SPI FLASH 16MBIT 2MB(4096个字节) (里面可以放字库,图片,也可以程序掉电不丢失数据放里面) 例程讲解: ① 1.用到SPI ...
- UVa 12627 Erratic Expansion - 分治
因为不好复制题目,就出给出链接吧: Vjudge传送门[here] UVa传送门[here] 请仔细看原题上的那幅图,你会发现,在时间t(t > 0),当前的气球构成的一幅图,它是由三个时间为( ...
- sbt介绍与构建Scala项目
一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...
- 批量启动application pool
在powershell中执行 Get-ChildItem IIS:\AppPools | where {$_.state -eq "Stopped"} | Start-WebApp ...
- 软件设计师真题试题&&答案
软件设计师2013上半年上午试题及答案详解 下午试题 2013下半年上午答案 试题 下午答案 试题 2014上半年上午答案 2015上半年上午答案 2016上半年上午试题
- C指针的一些知识
原文:http://blog.csdn.net/soonfly/article/details/51131141 前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何 ...
- PHPStorm默认在新窗口打开
这个设置很实用.
- 使用 XPath 选择器
在前面的内容中,我们掌握了一些 CSS 选择器和它们的使用方法,以及 rvest 包中用于提取网页内容的函数.一般来说,CSS 选择器足够满足绝大部分的 HTML 节点匹配的需要.但是,当需要根据某些 ...