2012-08-01 47 views
0

我想知道是否有方法來測量函數的性能。部分。爲速度感知函數

我知道你是能夠測量它需要完成的功能,但有測量功能中的各個queires方式的總時間?

只是想知道,因爲我無法找到我的函數的性能瓶頸。

+0

你看在函數查詢執行計劃? – HABO 2012-08-01 21:44:55

+0

是的。也許我只是不知道如何使用它們,但包括實際的執行計劃對我來說是沒用的,因爲它只是顯示函數本身的100%。估計執行計劃效果更好,但它只是顯示一個巨大的圖像,需要永遠導航,只顯示我的百分比。這個百分比是否與它在這個特定功能上花費的時間直接相關? – user1512593 2012-08-01 21:54:46

+0

@ user1512593 - 請編輯問題以顯示函數的代碼以獲取更具體的答案。 – 2012-08-01 22:06:39

回答

1

大多數的時候,你看到的估計和實際的執行計劃之間的主要區別,那是因爲你的統計數據還沒有(曾經)更新。因此,SQL Server不知道哪些表的數據很少,哪些表的數據量很大,等等,並且更可能產生虛假計劃(估計的和實際的),或者錯估計算出的計劃成本。實際的計劃是基於計劃的真實準確的成本,但是當計劃與最佳計劃相差甚遠時,這種準確性對於確定瓶頸幾乎沒有什麼價值。

爲了解決這個問題,發出UPDATE STATISTICS陳述或執行sp_updatestats程序。

看到你的功能100%的實際值很可能是空的或幾乎空數據庫的效果,無論你是否有UPTODATE統計與否。在優化性能時,確保您的數據庫準確地用大量數據填充(將每個表格的記錄數量比您期望的生產數量多兩倍;但是請保持預期的粗略比例)。使用空的或完全不成比例的誇大數據庫來尋找性能瓶頸沒有多大意義;查詢計劃將會有所不同,即使計劃碰巧是同一個計劃,瓶頸可能在生產之外。

+0

好的。我愛你。謝謝。沒有找到確切的答案,但您的sp_updatestats確實有助於提高ALOT的性能!還有一個問題,我是否需要爲每個函數運行它,或者一旦運行一次就運行它? – user1512593 2012-08-01 22:43:12

+1

@ user1512593 - 定期運行(每晚)。每次大幅改變數據庫的大小/內容時,每次運行一次 - 初始配置,返回服務等。在正常操作的峯值期間不要運行它。 – 2012-08-02 00:13:36