解決運行procedure很慢但運行procedure內(nèi)容很快問題
發(fā)布時間:2014-02-21 09:34:32 作者:佚名
我要評論

打開procedure一段一段執(zhí)行卻沒問題,執(zhí)行整個procedure的內(nèi)容也沒問題,但是exec procedure_nm卻始終有問題,下面有個不錯的解決方法,大家可以參考下
問題描述:
有一次在發(fā)布系統(tǒng)到production環(huán)境之后,突然發(fā)現(xiàn)報表過了好幾分鐘也刷新不出來,小哥我直接就慌神了。迅速進(jìn)行各種測試,首先右鍵報表屬性找出報表地址,看看參數(shù)是否傳對了。找出報表參數(shù)之后直接運行procedure,也跑不出來。打開procedure一段一段執(zhí)行卻沒問題,執(zhí)行整個procedure的內(nèi)容也沒問題,但是exec procedure_nm卻始終有問題。在開發(fā)環(huán)境execute procedure,也沒問題。于是,開始糾結(jié)了。
環(huán)境:SQL SERVER 2008, SSRS 2008
解決過程:
仔細(xì)思考production環(huán)境和開發(fā)環(huán)境的不同,無非就是開發(fā)環(huán)境是新搭建的環(huán)境,production是已經(jīng)存在好幾年的環(huán)境,這次只是對其報表producdure進(jìn)行了改變,并打了一個補丁修改之前半年的歷史數(shù)據(jù)。后來發(fā)現(xiàn)這里就是引起這次事情的主要原因。通過不斷的查找問題,發(fā)現(xiàn)了開發(fā)環(huán)境和production里面的表統(tǒng)計信息(在SQL SERVER里面左側(cè)目標(biāo)瀏覽器中展開表之后的最下面一個項目:Statistics)不一樣。當(dāng)時只是一個猜測,大量跟新數(shù)據(jù)會引起production的統(tǒng)計信息過時,而SQL SERVER引擎在解析procedure的時候會根據(jù)統(tǒng)計信息制定一系列數(shù)據(jù)檢索計劃,就像以前從A市到B市有一條高速公路,現(xiàn)在這條高速公路沒用了,SQL SERVER引擎就去尋找其他笨的方法,而統(tǒng)計信息的自動更新只會發(fā)生在夜深人靜之時。所以便嘗試著去申請手動更新production的統(tǒng)計信息。統(tǒng)計信息更新之后,報表能夠正常打開了。
解決方法:
USE Database_nm
EXEC sp_UpdateStats
結(jié)論:
在大量更新數(shù)據(jù)之后,會使數(shù)據(jù)庫的統(tǒng)計信息發(fā)生變化,繼而影響SQL SERVER對SQL的解析。需要重新更新數(shù)據(jù)庫的統(tǒng)計信息,讓SQL SERVER參考最新的正確的信息去制定執(zhí)行計劃。
有一次在發(fā)布系統(tǒng)到production環(huán)境之后,突然發(fā)現(xiàn)報表過了好幾分鐘也刷新不出來,小哥我直接就慌神了。迅速進(jìn)行各種測試,首先右鍵報表屬性找出報表地址,看看參數(shù)是否傳對了。找出報表參數(shù)之后直接運行procedure,也跑不出來。打開procedure一段一段執(zhí)行卻沒問題,執(zhí)行整個procedure的內(nèi)容也沒問題,但是exec procedure_nm卻始終有問題。在開發(fā)環(huán)境execute procedure,也沒問題。于是,開始糾結(jié)了。
環(huán)境:SQL SERVER 2008, SSRS 2008
解決過程:
仔細(xì)思考production環(huán)境和開發(fā)環(huán)境的不同,無非就是開發(fā)環(huán)境是新搭建的環(huán)境,production是已經(jīng)存在好幾年的環(huán)境,這次只是對其報表producdure進(jìn)行了改變,并打了一個補丁修改之前半年的歷史數(shù)據(jù)。后來發(fā)現(xiàn)這里就是引起這次事情的主要原因。通過不斷的查找問題,發(fā)現(xiàn)了開發(fā)環(huán)境和production里面的表統(tǒng)計信息(在SQL SERVER里面左側(cè)目標(biāo)瀏覽器中展開表之后的最下面一個項目:Statistics)不一樣。當(dāng)時只是一個猜測,大量跟新數(shù)據(jù)會引起production的統(tǒng)計信息過時,而SQL SERVER引擎在解析procedure的時候會根據(jù)統(tǒng)計信息制定一系列數(shù)據(jù)檢索計劃,就像以前從A市到B市有一條高速公路,現(xiàn)在這條高速公路沒用了,SQL SERVER引擎就去尋找其他笨的方法,而統(tǒng)計信息的自動更新只會發(fā)生在夜深人靜之時。所以便嘗試著去申請手動更新production的統(tǒng)計信息。統(tǒng)計信息更新之后,報表能夠正常打開了。
解決方法:
USE Database_nm
EXEC sp_UpdateStats
結(jié)論:
在大量更新數(shù)據(jù)之后,會使數(shù)據(jù)庫的統(tǒng)計信息發(fā)生變化,繼而影響SQL SERVER對SQL的解析。需要重新更新數(shù)據(jù)庫的統(tǒng)計信息,讓SQL SERVER參考最新的正確的信息去制定執(zhí)行計劃。
相關(guān)文章
電腦提示找不到libcef.dll無法繼續(xù)執(zhí)行代碼怎么辦? libcef.dll丟失修復(fù)
在使用電腦的過程中,你可能會突然遇到諸如“找不到libcef.dll”或者“由于缺少libcef.dll,程序無法啟動”之類的惱人提示,下面我們就來看看詳細(xì)解決辦法2025-04-23電腦提示由于找不到d3dx9_43.dll如何解決? d3dx9_43.dll文件丟失修復(fù)技
在使用Windows操作系統(tǒng)運行某些應(yīng)用程序(尤其是游戲或圖形密集型軟件)時,用戶可能會遇到“d3dx9_43.dll文件丟失”的錯誤提示,這一錯誤不僅影響程序的正常啟動,還可能2025-04-23電腦死機(jī)無反應(yīng)怎么強制重啟? 一文讀懂方法及注意事項
在日常使用電腦的過程中,我們難免會遇到電腦無法正常啟動的情況,本文將詳細(xì)介紹幾種常見的電腦強制開機(jī)方法,并探討在強制開機(jī)后應(yīng)注意的事項,以及如何從根本上解決電腦2025-04-16電腦如何通過數(shù)據(jù)線連接手機(jī)網(wǎng)絡(luò)? 電腦上網(wǎng)不再受限的技巧
今天我來分享一下如何用USB線把臺式電腦連接到手機(jī)的網(wǎng)絡(luò)上,其實操作非常簡單,只需要幾步就搞定了,讓我們一起來看看吧2025-04-15分辨率三兄弟LPI、DPI 和 PPI有什么區(qū)別? 搞清分辨率的那些事兒
分辨率這個東西,真的是讓人又愛又恨,為了搞清楚它,我可是翻閱了不少資料,最后發(fā)現(xiàn)“小7的背包”的解釋最讓我茅塞頓開,于是,我決定整理一下,給大家分享一下我的理解2025-04-03- 你是否曾想過,為什么鍵盤上的空格鍵有時并不能滿足我們的需求?其實,空格鍵輸入的空格分為全角和半角兩種2025-03-31
mss32.dll文件丟失怎么辦? 電腦提示mss32.dll丟失的多種修復(fù)方法
最近,很多電腦用戶可能遇到了mss32.dll文件丟失的問題,導(dǎo)致一些應(yīng)用程序無法正常啟動,那么,如何修復(fù)這個問題呢?別擔(dān)心,本文將詳細(xì)介紹mss32.dll文件的作用和丟失原因2025-03-26電腦提示找不到openal32.dll文件怎么辦? openal32.dll丟失完美修復(fù)方法
openal32.dll是一種重要的系統(tǒng)文件,當(dāng)它丟失時,會給我們的電腦帶來很大的困擾,很多人都曾經(jīng)遇到過這個問題,但你知道該如何解決嗎?詳細(xì)請看下文介紹2025-03-26電腦win32spl.dll文件丟失咋辦? win32spl.dll丟失無法連接打印機(jī)修復(fù)技
電腦突然提示win32spl.dll文件丟失,打印機(jī)死活連不上,今天就來給大家詳細(xì)講解一下這個問題的解決方法,手把手教你如何搞定win32spl.dll丟失的問題,讓你輕松恢復(fù)打印機(jī)連2025-03-26電腦提示binkw32.dll缺失怎么辦? 教你輕松解決binkw32.dll丟失問題修復(fù)
電腦上玩游戲時,突然彈出“計算機(jī)丟失binkw32.dll”的錯誤提示,是不是讓你瞬間抓狂?別擔(dān)心,今天就來手把手教你如何解決這個問題2025-03-26