关于insert效率的问题

strive_x 2010-08-25 05:27:14
用c++ occi连接oracle数据库。做压力测试,要插入2万条数据,做过如下测试:
1. 直接insert, 用时3秒。
2. 每次insert后commit,用时3分钟。
3. 调用存储过程(存储过程中加commit和不加commit)用时3分钟。
4. 循环调用2万次空的存储过程 用时2秒钟。
5. 直接运行存储过程循环2万次insert,用时10秒。

现在的目的是能让底层语言尽快的insert数据。请遇到此问题高手们告之。出现问题的原理及解决方法

目前怀疑是否oracle有保护机制,对外来流数据有加锁功能导致超时。
...全文
355 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunboy_yf 2010-08-30
  • 打赏
  • 举报
回复
/*+append*/ 是个方法,速度能有所提高。
如果是插入一行,就commit的话,效率肯定低下,事务的处理是十分耗资源的。
jspwind 2010-08-26
  • 打赏
  • 举报
回复
绑定变量会比较省资源。减少数据库的解析次数。我给他个建议。如果是C++来处理2W多数据的入库操作。如果您的程序要一直都做一样的指量操作。Sqloader 很适合您。我们的很多C++平台都用的Sqloader入库的。
gdd714 2010-08-26
  • 打赏
  • 举报
回复
有人提到了绑定变量,如果不用每次都解析比较耗资源
jspwind 2010-08-26
  • 打赏
  • 举报
回复
C++的话入库用sqloader 更好。更直接。生成好sqloader文件,直接调一下就完事了。2W数据。只是小数据.
心中的彩虹 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 strive_x 的回复:]
用c++ occi连接oracle数据库。做压力测试,要插入2万条数据,做过如下测试:
1. 直接insert, 用时3秒。
2. 每次insert后commit,用时3分钟。
3. 调用存储过程(存储过程中加commit和不加commit)用时3分钟。
4. 循环调用2万次空的存储过程 用时2秒钟。
5. 直接运行存储过程循环2万次insert,用时10秒。

现在的目的是能让底层……
[/Quote]
/*+append*/
jspwind 2010-08-26
  • 打赏
  • 举报
回复
insert 语句绑定变量,每500条或是1000条提交一次。

绑定变量。就是SQL语句可以写成变理绑定的方式传弟参数。减少oracle 对SQL的解析。

insert into table values(:1,:2,:3)
please_call_me_J 2010-08-26
  • 打赏
  • 举报
回复
但是如果数据不能和数据库统一,要是开发的是金融系统,人家资金交易了你还不对数据库操作那不是又可以再操作?
strive_x 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wffffc 的回复:]
1 程序中要用绑定变量
2 每insert一次commit一次肯定是不合适的,效率很低
[/Quote]
谢谢,用绑定变量是什么意思。能否举个例子
wffffc 2010-08-25
  • 打赏
  • 举报
回复
1 程序中要用绑定变量
2 每insert一次commit一次肯定是不合适的,效率很低

wffffc 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 strive_x 的回复:]
引用 2 楼 csuxp2008 的回复:
建议用循环,每插入100条就commit

因为要用到实时数据。每一条就需要commit一次。
程序可以保证没问题。没有过多的冗余。
[/Quote]
可以一秒提交一次,这样应该可以满足实时性要求.
strive_x 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 csuxp2008 的回复:]
建议用循环,每插入100条就commit
[/Quote]
因为要用到实时数据。每一条就需要commit一次。
程序可以保证没问题。没有过多的冗余。
minitoy 2010-08-25
  • 打赏
  • 举报
回复
需要看程序.
csuxp2008 2010-08-25
  • 打赏
  • 举报
回复
建议用循环,每插入100条就commit
ngx20080110 2010-08-25
  • 打赏
  • 举报
回复
關注,幫頂

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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