我是使用INTERBASE数据库的;
我的程序中有个操作,就是把数十W条的记录插入到数据库;但是速度总是不尽人意(我每秒钟只能插入260条左右记录),我使用了如下的优化方法:
1、使用线程引导插入数据(线程优先级为tpHighest)
2、使用存储过程插入数据
3、给需要插入操作的表建立簇索引另:我的机器是好机器,不考虑机器因素了;大家说说,还有什么办法能提高数据插入速度吗?
我的程序中有个操作,就是把数十W条的记录插入到数据库;但是速度总是不尽人意(我每秒钟只能插入260条左右记录),我使用了如下的优化方法:
1、使用线程引导插入数据(线程优先级为tpHighest)
2、使用存储过程插入数据
3、给需要插入操作的表建立簇索引另:我的机器是好机器,不考虑机器因素了;大家说说,还有什么办法能提高数据插入速度吗?
解决方案 »
- 把数据从xml文件中导入到TADOQuey,却不能提交到数据库,在线等
- dhtmledit与WebBrowser有什么区别!!!
- 求助:第一次做审计系统的东西,请大家给提意见
- C/S结构,如何在一个客户端改变数据库中表的数据,在另一个客户端能够在dbgrid中立即显示改变后的数据(dbgrid显示控件一直是显示数据的
- 奇怪的问题
- 如何实现form1与form2的切换?我也知道这是个很菜的问题
- 如何实现点对点的基于inter net 的文件的传输
- TreeView的Moveto方法问题
- array of byte转string后,中文乱码
- Kylix 出了正式版吗?
- 怎样在程序启动时就在窗口上画线(直线或圆等与canvas有关的指令)?
- 用程序(不关机)重启IIS服务
(1)增大数据操纵缓冲区。
(2)插入之前删除相关索引,完成之后再重建索引。(前面有人说过了)
(3)插入之前删除相关触发器,完成之后再重建触发器。(原理同上,前提是不影响数据约束)
(4)如果是Oracle,还有很多优化途径,可惜俺不熟悉IB。关注并学习...
我是个菜鸟,在学习中有过这样一个经历:
(查XX历史档案<数年间>)(SQL SERVER)
目标数据表非常大,经常要查询1年,2年等期间所有消费记录,即结果表也很大。
使用SQL语句一次性查询效率非常低(不会多线程,别笑!),后来改为分解查询,即比方说查一年的,我分解成查各月(或更少时间段)数据,再累积到一个表中,速度快了不少。修改大批量数据时也一样操作。那次经历改变了我对SQL的一些看法。
update AAA set bbb='CCC' where (一年期间)
和
循环各月
update AAA set bbb='CCC' where (某月)
那个快!(试试数十万目标记录条件下)
(我的理解:小批量操作对服务器的压力小,速度自然要快些,单次过大数据量的请求会给服务器造成很大压力,缓存毕竟有限。这有点象互联网网站攻击)
如果结合多线程,应该更快。
----胡说一通,各位见笑!
http://expert.csdn.net/Expert/topic/1889/1889621.xml?temp=.6576197