日期:2014-05-17  浏览次数:20580 次

大神指点提高sqlserver的写入速度
一个类似生产者消费者问题的系统,一个线程采集数据存入内存中开辟的缓冲区,另一个线程从缓冲区取数据存入sqlserver数据库,存储部分的代码大致如下:
                   m_pRecorset->AddNew();
 m_pRecorset->PutCollect
                 ……
 m_pRecorset->Update(); 
    
  vc + ADO的方式连接数据库,数据表前三个字段很简单,第四个字段是image类型的,大小为2000个float数,在存本地数据库的时候每秒存100条记录的时候数据就开始在缓冲区积压了,连局域网其他数据库更差劲,每秒40条记录已经是极限了……
  各位好心的大神帮帮忙,怎样优化一下,关于ado存储这一块不是很熟,网上有说用UpdateBatch,不知道怎么用,能凑效不
sqlserver 存储 数据库 image

------解决方案--------------------
1、尽量把对SQLServer的操作放到SQLServer层面上做。
2、对应的表上索引、约束尽可能少,除非必要。
3、把数据库恢复模式改成大容量日志或者简单模式。
4、可以降低索引页的填充因子。
------解决方案--------------------
引用:
DBA_Huangzj
1、尽量把对SQLServer的操作放到SQLServer层面上做,这个怎么讲哦,能举个例子吗?谢谢
我个人喜欢用存储过程实现业务逻辑,而前端只是传需要增删改的参数值就可以了。另外下次引用我了
------解决方案--------------------
ado我个人认为更多的是对数据库发起一些“请求”,而不应该频繁对数据库或者上面的数据进行“操作”,因为就像《SQL语言艺术》这本书上说的,越接近DBMS的核心,运行速度越快,那些在程序面运行的东西,几乎不可能比统一复杂度的在DBMS上面直接运行的SQL语句高效。我很多年 没编程了,这方面不熟悉,但是从操作发生位置来看,尽可能放到SQLServer层面上去实现,这样就算优化起来也会块很多。