社区
Java EE
帖子详情
Oracle 提高效率问题
灵犀Sword
2010-07-19 11:39:05
最近在做一个项目,对数据的插入效率要求很高..比如每一秒就会有1000条数据需要插入数据库中。同时在插入数据时有大量的业务逻辑..比如对传入数据中字符的处理 截取等.主要是想知道 需要使用什么方式来提高插入数据的性能!jdbc 队列处理? 还是存储过程?或者还有其他好的方式
...全文
202
26
打赏
收藏
Oracle 提高效率问题
最近在做一个项目,对数据的插入效率要求很高..比如每一秒就会有1000条数据需要插入数据库中。同时在插入数据时有大量的业务逻辑..比如对传入数据中字符的处理 截取等.主要是想知道 需要使用什么方式来提高插入数据的性能!jdbc 队列处理? 还是存储过程?或者还有其他好的方式
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
becameaeagle
2010-07-20
打赏
举报
回复
学习学习
能不能做点触发器来减少业务逻辑处理?
fengshuo11
2010-07-20
打赏
举报
回复
采用存储过程比较适合
灵犀Sword
2010-07-20
打赏
举报
回复
不只是单单的插入 在插入前做业务逻辑 也是一部分...业务逻辑的时间是减少不了了 但是尽量提高插入数据库的效率 才是重点 今天测试了 下 同时有10000台客户端 就有问题了
火龙果被占用了
2010-07-20
打赏
举报
回复
1 秒 1000 条只是个估计值,根据我的经验这种估计值比实际偏大 10 倍。
对酒当歌今夕何夕
2010-07-20
打赏
举报
回复
也要注意硬件,这么高的IO, 保持网络 硬盘 系统,内存的 负载
最后肯定还是空间换时间
大量缓存,快照,分时间段,多级查询等等
landyshouguo
2010-07-20
打赏
举报
回复
[Quote=引用 11 楼 dinghun8leech 的回复:]
引用 6 楼 cooljia 的回复:
1. 使用多线程,在应用程序中将字符操作提前处理掉,简化oracle sql语句
2. 采用批量提交,避免每一个数据操作一个commit动作
我倒是觉得,通常字符串处理的速度远高于与数据库交互的速度,而数据入库肯定只能排队一个个来,因此此处使用多线程,似乎也只能让准备入库的数据队伍排的长点儿罢了,呵呵。
批量提交也是我能想到的唯一办法。嘿嘿。
……
[/Quote]
存储过程还是很合理的
xuyang840117
2010-07-20
打赏
举报
回复
业务逻辑 可以在程序中处理,然后在插入数据库
1秒钟插入10000条? 这个有点夸张吧
你查询10000需要多久啊
还是插入临时表,然后在存储还是 ds 什么的 批量处理吧
淅沥加油
2010-07-20
打赏
举报
回复
不懂,来学习
laukie
2010-07-20
打赏
举报
回复
推荐使用存储过程,
goalboy118
2010-07-20
打赏
举报
回复
3楼的回答有道理
macower
2010-07-20
打赏
举报
回复
最好的方式是使用存储过程 那样效率是最高的
灵犀Sword
2010-07-20
打赏
举报
回复
这是个短信平台中对于接受MO消息的处理 因为该系统 可能会同时接受100个国家的增值业务短信 所以肯定会有大量的处理..忘高手们不要只是路过下..
icy_csdn
2010-07-20
打赏
举报
回复
不知道是什么类的数据,每秒会有1K的数据插入?
1. 尽量减轻数据库的负担,让数据库只做它自己擅长的数据存储和检索,在提交数据库前做相关的校验和处理工作;
2. 一定要做缓存处理,先存放于内存(没有比这个速度更快的了),然后再批量提交数据库;
如果这样还不够(oracle该扔了),那你就应该考虑不能只靠一台数据库来支撑你的业务,考虑分布式存储。
不知道你们的系统中如何架构的,会同时有10000台客户端连接数据库?如果不能满足业务要求,应该重新考虑一下系统架构。
mycsdnhao
2010-07-19
打赏
举报
回复
建缓冲机制,判断完后放到临时表中,定期(比如5分钟)导入到正式表;
或者校验转换完之后直接存成txt文件,定期(比如5分钟)用sql loader导进正式表。
sql loader的效率比insert要高出很多
sujianchinaouya
2010-07-19
打赏
举报
回复
不懂观望中,
hitsnail
2010-07-19
打赏
举报
回复
分次提交,使用preparestatement()的 batch方式,基本就达到你的要求了.
dinghun8leech
2010-07-19
打赏
举报
回复
[Quote=引用 6 楼 cooljia 的回复:]
1. 使用多线程,在应用程序中将字符操作提前处理掉,简化oracle sql语句
2. 采用批量提交,避免每一个数据操作一个commit动作
[/Quote]
我倒是觉得,通常字符串处理的速度远高于与数据库交互的速度,而数据入库肯定只能排队一个个来,因此此处使用多线程,似乎也只能让准备入库的数据队伍排的长点儿罢了,呵呵。
批量提交也是我能想到的唯一办法。嘿嘿。
dr_lou
2010-07-19
打赏
举报
回复
只能想到批量插入,至于你说的校验我觉得不是瓶颈,插入前做好呗。
O溺水的鱼0
2010-07-19
打赏
举报
回复
[Quote=引用 3 楼 jkgao801 的回复:]
存储过程应该是不错的选择
[/Quote]
尽量还是用存储过程
灵犀Sword
2010-07-19
打赏
举报
回复
一秒如何实现 多个1000个用户的提交事件 有没有什么可以按时间来执行批处理的?
加载更多回复(5)
Oracle
提高数据库效率
此文档是
Oracle
提高数据库效率的总结,能够帮助你在使用
Oracle
编程时带来的效率
问题
!
提高
Oracle
查询效率
NULL 博文链接:https://turandot.iteye.com/blog/1698097
数据库中间件MyCat分库分表教程
MyCAT 是一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务、ACID、可以替代Mysql的加强版数据库 ?... 通过理论和剖析原理的方式让你使用MyCat技术,节省你的学习时间和提高你的学习效率。
提高
Oracle
中SQL的执行效率
提高
Oracle
中SQL的执行效率提高
Oracle
中SQL的执行效率
Oracle
提高SQL查询效率(SQL优化).doc
Oracle
提高SQL查询效率(SQL优化)
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章