年底前在開發一個SQL Server BI項目的過程中,我們測試SSIS包的時候,發現有好幾天晚上取數的時間都超出了以前的
取數時間,剛開始我們以爲是換了服務器,服務器硬件的性能有差異導致,後來我們仔細觀察了服務器硬件資源的使用情況,發
現服務器的硬件資源不大可能是導致運行時間變長的原因。後來我們繼續調查網絡狀況,監控速度變慢的這幾天網絡的監控情況,
通過對比也沒有發現最近幾天網絡有異常而導致取數時間的變慢。
我們只是變更了數據源,將以前取數的數據庫更換成了一個較新的數據庫,由於數據庫最近做了些結構上優化和調整,我們
重新取了一個數據庫備份還原後做測試。於是我們開始考慮是否由於數據庫的統計信息變化導致數據庫查詢的性能下降,因而導致
我們的SSIS取數時間增加了呢?下午我們首先將數據庫的統計信息進行了全面的更新,更新數據庫的統計信息整整花了2個小時。更
新完成後,我們就開始運行作業跑數據,第二天早上我們來看運行數據時,發現還真是統計信息沒有更新造成我們的取數過程變慢
的了。在我們更新統計信息的前,取數要8個小時還跑不完,但是當我們更新完統計信息後,跑數據只需要4個小時多點就可以了。
後來我們進一步調查了統計信息沒有能夠及時更新的原因,因爲我們對數據庫的統計信息設置的是自動更新,意味着統計信息
每隔一段時間會根據數據庫的實際情況刷新一次,我們取數據庫的備份時,可能剛好數據庫還沒有來得及刷新統計信息,因爲我們
數據庫服務器白天比較繁忙,一般晚上纔會去刷新統計信息。
真相大白,困擾了我們一個星期的難題也得以破解。