環境: SQL 2005 STD, RAM 64G,CPU 24
最近跟同事一起看SQL的效能問題,
透過 SQL Profiler 工具,錄出 5 秒以上的SQL。
查看它們的執行計畫,幾乎都用到了 平行處理。
奇怪的是, Select 出很少的資料,卻使用 平行處理。
而且 SQL 的效能,忽快忽慢。執行計畫如下,
筆者覺得Select 出很少的資料,應該不會用到 平行處理才對。
於是在最後加入 OPTION (MAXDOP 1) 讓它不要跑 平行處理,
執行效能都穩定在 3 秒以內。
把其他錄到的 SQL 都加上 OPTION (MAXDOP 1) 後,
效能有提升,而且時間都還蠻穩定的。
但總不能每個 SQL 都加上那一段吧。
於是請教百敬老師,百敬老師建議如下,
提升 cost threshold for parallelism (預設是5秒),
max degree of parallelism (每個SQL最多可用的CPU數,預設是0表示 沒限制)可以限制成 4 或 8 。
所以後來我們的調整如下,
後來SQL的效能就穩定多了。
參考資料
cost threshold for parallelism 選項
設定 max degree of parallelism 伺服器組態選項
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^