如何提升SqlBulkCopy的效率

yuhangding 2012-06-25 10:56:03
在sql server 2005有一张大表,存一个月的数据,一个月有几千万数据,使用的是sqlbulkcopy进行批量导入,一次导入几百条数据,调用很频繁。最近数据量增大,往往入库效率很低,500条数据需要2秒钟,造成前面大量数据积压。
我知道索引会造成入库效率低下,这张表也确实有几个非聚集索引,可是用户也需要能够实时的查询数据,如果入的时候禁用索引,同时再有查询就会很慢。
不知有什么方法能够提升入库效率呢,比如一批入库的量多一些?或者跟其他设置有什么影响比如日志。
这个数据库的恢复模式是simple

还有我们也有另外一个库,结构完全一样,数据库也基本一致,但另一个库就表现的比较好,不知道为什么。唯一的区别就是表现好的库,用户没怎么用,没什么其他查询操作。
...全文
301 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuhangding 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你这个表又要插入数据,又要供用户实时查询,设计上不合理,数据量一大肯定会带来各种效率的低下。
既然一个月有几千万数据,推荐按旬来做分区表。
或者使用专门的ETL工具来导入数据。
你自己也说了,另外一个库用户没怎么用,没什么其他操作,这样当然插入快了。
最好是调整需求,比如将插入数据的时间放在用户不使用系统的时候,或者使用读写分离,用户查询的是只读数据表,原来的表只用来插入数据。
仅供参……
[/Quote]
我这张表采用了分区表,是按天分区的,可是入库量大的时候,维护索引开销大。这个跟建不建分区表没什么影响,在分区表上索引也是分区的吗?能只按照具体分区重建吗。
gogodiy 2012-06-26
  • 打赏
  • 举报
回复
你这个表又要插入数据,又要供用户实时查询,设计上不合理,数据量一大肯定会带来各种效率的低下。
既然一个月有几千万数据,推荐按旬来做分区表。
或者使用专门的ETL工具来导入数据。
你自己也说了,另外一个库用户没怎么用,没什么其他操作,这样当然插入快了。
最好是调整需求,比如将插入数据的时间放在用户不使用系统的时候,或者使用读写分离,用户查询的是只读数据表,原来的表只用来插入数据。
仅供参考。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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