年底前在开发一个SQL Server BI项目的过程中,我们测试SSIS包的时候,发现有好几天晚上取数的时间都超出了以前的

取数时间,刚开始我们以为是换了服务器,服务器硬件的性能有差异导致,后来我们仔细观察了服务器硬件资源的使用情况,发

现服务器的硬件资源不大可能是导致运行时间变长的原因。后来我们继续调查网络状况,监控速度变慢的这几天网络的监控情况,

通过对比也没有发现最近几天网络有异常而导致取数时间的变慢。

          我们只是变更了数据源,将以前取数的数据库更换成了一个较新的数据库,由于数据库最近做了些结构上优化和调整,我们

重新取了一个数据库备份还原后做测试。于是我们开始考虑是否由于数据库的统计信息变化导致数据库查询的性能下降,因而导致

我们的SSIS取数时间增加了呢?下午我们首先将数据库的统计信息进行了全面的更新,更新数据库的统计信息整整花了2个小时。更

新完成后,我们就开始运行作业跑数据,第二天早上我们来看运行数据时,发现还真是统计信息没有更新造成我们的取数过程变慢

的了。在我们更新统计信息的前,取数要8个小时还跑不完,但是当我们更新完统计信息后,跑数据只需要4个小时多点就可以了。

          后来我们进一步调查了统计信息没有能够及时更新的原因,因为我们对数据库的统计信息设置的是自动更新,意味着统计信息

每隔一段时间会根据数据库的实际情况刷新一次,我们取数据库的备份时,可能刚好数据库还没有来得及刷新统计信息,因为我们

数据库服务器白天比较繁忙,一般晚上才会去刷新统计信息。

           真相大白,困扰了我们一个星期的难题也得以破解。