当我将大量的数据插入到数据库的时候,经常会出现服务器超时的错误

yghuaa 2014-03-10 06:25:05
请问要怎么提高这种大数据量的更新插入操作的性能啊,完全没有思路啊,
感觉存储数据的SQL语句都是一样的吧,Insert into
...全文
1063 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
感同深受 2014-03-15
  • 打赏
  • 举报
回复
正如楼上所说可以批处理,再就是可以使用缓存,先别着急插入到数据库,先吧数据放到内存,或者文件,利用空闲时间插入,但一定要做好日志记录。
MiceRice 2014-03-14
  • 打赏
  • 举报
回复
如三楼所说的各类意见。 首先看看是不是全作为一个事务,从而导致事务规模太大了,这种是不行的。 如果确实需要作为一个事务,先全部弄进某临时表,再一句Insert来做表间数据批量导。 第二个就是单条单条执行Insert效率也低,应该考虑batch批量操作,每个batch也不宜太大。 第三个就是大批量操作不要作为实时业务(用户在界面上点个导入,系统就非要全做完才反馈),而是作为后台任务(用户点击导入后,系统提示已经开始进行导入,请过会儿再来查询导入结果)。 最后就是:如果能用外部工具(SQL Loader等)解决那是最好了。
去旅行吧 2014-03-13
  • 打赏
  • 举报
回复
我也遇到同样的问题
TonyChen19810807 2014-03-13
  • 打赏
  • 举报
回复
这个问题要多方面去讨论。按照上面的思路,如果插入数据过于巨大,那么讲造成数据库回滚栈爆掉。 要解决问题,你首先得说明系统瓶颈是什么。如果是存储的瓶颈,可以考虑过分区,分库。 如果是接入点不能承担负荷,可以考虑加节点。 如果业务允许批量添加,可以在后台用专门的工具,如sqlloader之类的。
slimina 2014-03-10
  • 打赏
  • 举报
回复
开启事务批量insert数据, oracle的话可以100条提交,在出错的地方try{}, 并继续从刚出错的地方继续执行。

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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