我們正在浮動一個新的可擴展的,以性能爲中心的ASP.Net應用程序,目前處於設計階段。使用CLR存儲過程時的問題和解決方案?
經理們決定採取混合方式。他們決定廣泛使用CLR存儲過程,而T-SQL僅用於簡單的數據操作。
我想知道從社區如下:
- 是否有可以有這麼多的CLR存儲過程以後階段的性能問題?
- 如果您有任何性能問題,是否有可從MS團隊獲得的修復程序?
注意:我做了一個谷歌,發現以下最可能的問題,但沒有找到前兩個決議。
當SQL Server加載程序集時,它們被緩存在內存中。當O/S向SQL Server發出內存壓力時,可能會運行顯式垃圾回收,並且可能會卸載程序集。如果頻繁發生,這可能會導致性能問題。
查詢優化程序無法準確計算SQL CLR代碼,因爲它不會查看代碼實際執行的操作 - 這會影響執行計劃。
SQL CLR代碼有時會阻止並行性,因爲它們通常是單線程的。有時這可能會損害性能。 < <雖然我找到了解決這一這裏Multi-threaded code in CLR Stored Procs? >>
讓我知道與CLR存儲過程的問題和解決。
只是一個建議的話:做**數據操作**任務,如選擇或更新** T-SQL中的數據** - 比使用SQL CLR和C#更好(包括性能)同樣的任務。限制SQL CLR來完成T-SQL的工作 - 調用外部Web服務,廣泛和高級的字符串和數據操作以及類似的東西。只是因爲你**可以遍歷一個表並更新SQL CLR存儲過程中的每一行 - 激動 - 行並不意味着**你應該** .. – 2012-03-29 20:33:55