- 浏览: 1025935 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
数组接口
数组接口允许你使用数组变量替代标量变量来进行绑定。当特定的DML语句需要插入或更新大量数据的时候,它就会非常有用。在执行DML语句的时候,不再需要针对每条记录分别执行一次,而可以将所有必要的值组合进一个数组然后仅仅需要执行一次即可,如果纪录的数量太大,也可以将执行操作拆分成小一点的批次。结果,到数据库的往返次数将与执行次数的数量成比例地下降。
必须强调的是,没有应用批量处理时加载的低性能并不是数据库引擎导致的,而是应用程序本身导致并反过来又受其拖累。
尽管数组接口对客户端来讲更加有效,数据库也能从中收益,事实上,数组接口降低了逻辑读的数量。
下面将提供一些关于如何在PL/SQL、OCI、JDBC和ODP.NET中使用数组接口的基本信息。
1.PL/SQL
在PL/SQL中,可以使用FORALL语句来应用数组接口。在执行一个DML语句的时候,可以利用它来将数据绑定成数组传递给数据库引擎。示例代码如下:
DECLARE
TYPE t_id IS TABLE OF t.id%TYPE;
TYPE t_pad IS TABLE OF t.pad%TYPE;
l_id t_id := t_id();
l_pad t_pad := t_pad();
BEGIN
-- prepare data
l_id.extend(100000);
l_pad.extend(100000);
FOR i IN 1..100000
LOOP
l_id(i) := i;
l_pad(i) := rpad('*',100,'*');
END LOOP;
-- insert data
FORALL i IN l_id.FIRST..l_id.LAST
INSERT INTO t VALUES (l_id(i), l_pad(i));
END;
需要特别注意的是,尽管这个语法是基于关键字FORALL的,但这不是一个循环。所有的纪录都是在一次数据库调用中发送过去的。
2.JDBC
在JDBC中,可以使用批量更新来使用数组接口(在一次执行操作中插入10万条记录)。例如代码如下:
sql = "INSERT INTO t VALUES (?, ?)";
statement = connection.prepareStatement(sql);
for (int i=1 ; i<=100000 ; i++)
{
statement.setInt(1, i);
statement.setString(2, "****************************************************************************************************");
statement.addBatch();
}
statement.executeBatch();
statement.close();
3.ODP.NET
在ODP.NET中,只要定义好基于数组的参数,并将属性ArrayBindCount设置为存储在数组中的值的个数,就可以应用数组接口了。下面的代码片段展示了这一点,它在一次执行操作中插入了10万条记录。
Decimal[] idValues = new Decimal[100000];
String[] padValues = new String[100000];
for (int i=0 ; i<100000 ; i++)
{
idValues[i] = i;
padValues[i] = "******************************************************************************************";
}
id = new OracleParameter();
id.OracleDbType = OracleDbType.Decimal;
id.Value = idValues;
pad = new OracleParameter();
pad.OracleDbType = OracleDbType.Varchar2;
pad.Value = padValues;
sql = "INSERT INTO t VALUES (:id, :pad)";
command = new OracleCommand(sql, connection);
command.ArrayBindCount = 100000;
command.Parameters.Add(id);
command.Parameters.Add(pad);
command.ExecuteNonQuery();
发表评论
-
sqlldr总结参数介绍
2012-06-28 14:29 22843有效的关键字: userid -- ORACLE use ... -
11gR2新特性:STANDBY_MAX_DATA_DELAY
2011-12-27 11:18 1230Active Data Guard 是 Oracle 11g ... -
Linux下用OCCI或OCI连接Oracle
2011-07-26 12:00 2913首先,去oracle官网下载C ... -
Oracle Mutex实现机制
2011-05-18 23:43 1076我们都知道Latch是Oracle ... -
local_listener参数作用
2011-05-10 17:19 1939pmon只会动态注册port等于1521的监听,否则 ... -
oracle伪列 rowid和rownum
2011-03-23 10:00 3547整理ROWID一 一,什么是伪列RowID?1,首先是一种数 ... -
Oracle10gR2 主备自动切换之客户端Failover配置
2011-01-20 10:32 9571. 主库检查和设置假设新增的服务名为ORCL_TAF.LK. ... -
Oracle10g配置Dataguard的相关参数解释
2011-01-20 10:24 1277参考自 http://space.itpub.ne ... -
wrap加密oracle包
2011-01-19 11:52 1304大家都知道oracle的很多系统包是没法看它的源码的,orac ... -
利用hcheck检查数据字典一致性状态
2011-01-17 17:42 1830利用hcheck可以检查oracle数据字典的一致性状态,主要 ... -
插入相同的数据量普通表和临时表产生的redo对比
2011-01-17 16:08 994往临时表里插入相同量 ... -
Database Link与GLOBAL_NAMES参数
2011-01-12 13:36 1037当GLOBAL_NAMES参数设置为TRUE时,使用DATAB ... -
Oracle Streams学习二(清除流配置)
2011-01-09 23:34 1194在完成streams部署之后,如果需要重新配置或舍弃配置,可以 ... -
red hat enterprise 下完全删除oracle 数据库
2011-01-05 01:28 1764步骤 1 以oracle用户登录主、备节点。步骤 2 ... -
Oracle常用dump命令
2010-12-20 00:31 839Oracle常用dump命令,记录一下备查。 一.M ... -
oracle执行DML(事物过程)的深入研究(二)
2010-12-14 15:02 1546接上一节的 oracle执行DML(事物过程)的深入研究(一) ... -
oracle执行DML(事物过程)的深入研究(一)
2010-12-14 10:26 2813用户所执行 DML (即执行事务)操作在 Oracle 内部按 ... -
Oracle基本数据类型存储格式研究(二)—数字类型
2010-12-14 00:35 1478数字类型包含number,intege ... -
Oracle基本数据类型存储格式研究(一)—字符类型
2010-12-13 23:32 11801.char char是定长字符型,内部代码是:96,最多可 ... -
关于oracle rowid的一些内容 -- 转载
2010-12-13 15:47 789本文讨论的是关于oracle ...
相关推荐
批量插入时,你可以先创建一个`ContentValues`数组,然后在一个循环中依次插入。 接下来是批量插入短信。在Android 4.4以后,系统对短信操作进行了严格的限制,非系统应用无法直接写入短信数据库。但可以通过使用...
8. **优化策略**:为了提高性能,开发者可能对哈希表的某些操作进行了优化,如预计算哈希值、批量插入等。 深入学习这个源码,你可以了解到易语言中的数据结构实现、算法运用以及优化技巧,对于提升易语言编程能力...
11. 批量处理Excel数据:可以使用MATLAB的Excel接口(如`xlsread`函数)读取Excel数据,将其导入矩阵,然后进行处理。对于大量数据,可以使用循环结构批量处理。 总的来说,MATLAB提供了丰富的功能来处理数值计算、...
ArrayList基于动态数组,适合随机访问,插入和删除较慢;而LinkedList基于双向链表,适合顺序访问和频繁的插入删除。 2. **Set接口**:Set接口不允许有重复元素。HashSet是最常见的实现,它不保证元素的顺序,且...
1. **效率更高**:epoll使用红黑树存储文件描述符,插入、删除和查找操作的时间复杂度都是O(logn),而select和poll则使用数组,当文件描述符数量大时性能下降明显。 2. **内存效率**:epoll支持边缘触发(ET)和水平...
标题中的"cpp"通常指的是C++,一种广泛使用的面向对象编程语言,而"Python...同时,对于Python到C++的转换,可以研究Python的C API或使用如PyBind11这样的库来创建Python接口,使得C++代码能无缝地与Python代码交互。
总之,深入研究`collectionJava源码-jcf-reading`将对提升Java程序员对JCF的理解,提升编程技巧,以及优化程序性能等方面产生积极影响。这个项目不仅提供了理论知识,还通过实际代码展示了如何在实践中应用这些概念...
LabVIEW支持将数组数据转换为适合SQL语句的格式,以便批量导入。 在实际操作中,可能还需要处理数据预处理、错误处理、事务管理等问题。例如,如果数据需要预处理或清洗,可以使用LabVIEW的数据处理工具,如“查找...
本项目“五子棋代码oracle”是基于Oracle数据库实现的,这为我们提供了研究如何将游戏逻辑与数据库存储、查询相结合的机会。下面将详细讨论这个项目中涉及的关键知识点。 1. **Oracle数据库**: Oracle是世界上最...
3. **批处理支持**:DButils 提供了批处理接口,可以方便地进行多条 SQL 批量执行,提高数据插入和更新的效率。 4. **异常处理**:DButils 封装了 JDBC 的异常,提供了统一的异常处理机制,简化了错误处理流程。 5...
最后,掌握如何高效地批量插入大量数据到数据库。 #### 第三部分:.Net高级技术 - **高级特性**:了解多项目开发的流程,深入研究CLR(公共语言运行时)、CTS(公共类型系统)、CLS(公共语言规范)、IL(中间语言...
首先,Labview提供了多种数据库接口,例如ODBC(Open Database Connectivity)和ADO.NET(ActiveX Data Objects .NET),允许开发者与SQL Server、Oracle、MySQL、SQLite等众多数据库系统进行通信。在这些范例中,你...
用于批量插入操作,提高写性能。 - **lock**:InnoDB的锁实现。包括行级锁和表级锁,用于实现事务的隔离级别。 - **log**:日志缓冲(Log Buffer)和重做日志组(Redo Log)的实现。用于确保事务的持久性。 - **mem*...
OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D图像,广泛应用于游戏开发、科学可视化以及工程应用等领域。 标题提到的"jogl简单入门例子"是针对初学者的一系列教程或示例代码,帮助快速理解和上手JOGL。...
它支持类、接口、继承、多态等面向对象特性,并且拥有强大的垃圾回收机制,使得内存管理更加简便。 在这个日程管理工具中,我们可能会看到以下几个关键知识点: 1. **Windows Forms**:作为C#中的GUI库,Windows ...
- `putAll`:从另一个`Map`对象批量插入所有映射。 【删除key-value相关方法】 - `remove(key)`:根据键移除对应的键值对。 - `remove(key, value)`:如果键值对的键和值都匹配,则移除该键值对。 【查找key-...
熟悉变量、条件语句、循环、数组、字符串操作以及文件I/O等基本概念是必不可少的。 2. **数据库交互** AB自动发卡平台必然涉及数据库操作,如MySQL。PHP可以通过PDO(PHP Data Objects)或mysqli扩展与数据库进行...
- **题目描述**:在CSS文件中正确插入注释的方式。 - **答案解析**:CSS注释采用`/* 注释内容 */`的形式。这种形式的注释不会被解析器解析,也不会影响样式的表现,是一种良好的代码注释习惯,便于维护和阅读。 #...
8、新增“数组_取次数”,取指定数组成员出现相同数量,源码由易友【C盘是头猪】提供。 9、修正“进程_ID取进程名”在64位系统不能获取名称的BUG,感谢易友【慕寒夜】反馈。 10、新增“进程_取线程数”通过进程ID或...