在sql server 2005有一张大表,存一个月的数据,一个月有几千万数据,使用的是sqlbulkcopy进行批量导入,一次导入几百条数据,调用很频繁。最近数据量增大,往往入库效率很低,500条数据需要2秒钟,造成前面大量数据积压。
我知道索引会造成入库效率低下,这张表也确实有几个非聚集索引,可是用户也需要能够实时的查询数据,如果入的时候禁用索引,同时再有查询就会很慢。
不知有什么方法能够提升入库效率呢,比如一批入库的量多一些?或者跟其他设置有什么影响比如日志。
这个数据库的恢复模式是simple还有我们也有另外一个库,结构完全一样,数据库也基本一致,但另一个库就表现的比较好,不知道为什么。唯一的区别就是表现好的库,用户没怎么用,没什么其他查询操作。

解决方案 »

  1.   

    你这个表又要插入数据,又要供用户实时查询,设计上不合理,数据量一大肯定会带来各种效率的低下。
    既然一个月有几千万数据,推荐按旬来做分区表。
    或者使用专门的ETL工具来导入数据。
    你自己也说了,另外一个库用户没怎么用,没什么其他操作,这样当然插入快了。
    最好是调整需求,比如将插入数据的时间放在用户不使用系统的时候,或者使用读写分离,用户查询的是只读数据表,原来的表只用来插入数据。
    仅供参考。