鉴于:SQL Server 2008 R2.退出数据光盘中的一些速度.记录光盘滞后. 要求:很多插入物.像10.000到30.000行一样,每秒有两个索引的简单表.插入物具有固有顺序并且不会重复,因为插入顺序不能
要求:很多插入物.像10.000到30.000行一样,每秒有两个索引的简单表.插入物具有固有顺序并且不会重复,因为插入顺序不能在短期内保持(即多个平行插入物是可以的).
到目前为止:将数据累积到队列中.定期(异步线程池)将最多1024个条目清空到排队的工作项中. Threadpool(自定义类)有32个可能的线程.打开32个连接.
问题:性能下降了300倍……每秒只插入大约100到150行.日志等待时间高达40% – sql server中处理时间(每秒ms)的45%.服务器CPU负载很低(4%到5%左右).
不可用:批量插入.数据必须尽可能实时写入光盘.这几乎是通过系统运行的数据的归档过程,但是有些查询需要定期访问数据.我可以尝试将它们转储到光盘并使用批量上传每秒1-2次….将试一试.
谁有聪明的主意?我的下一步是将日志移动到快速光盘集(128gb现代ssd)并查看当时会发生什么.显着的性能提升可能会带来很大的不同.但即便如此……问题在于/是否可行.
所以,请开启聪明的想法.
好的,我自己.试试SqlBulkCopy,批量处理多达65536个条目,并以异步方式每秒刷新一次.将报告收益.