2013年12月10日 星期二

Remote Scan的問題

        在Performance Dashboard看到有不正常的Waiting Requests,點進去看Query Plan,發現問題在於Remote Scan,如下圖



        這是更新Linked Server遠端資料表時發生的問題,這個資料表是有Clustered index的,篩選條件也用到Clustered index的欄位,有趣的是在Local執行該Update Remote Statement的運算子是Remote Query,但將Update Remote Statement放到Local SP裡去,運算子就會變成Remote Scan,很詭異,我自己在測試機可還原此現象,如下圖,成本差很多


        這個問題似乎在SQL 7.0就有了,Slow DELETE or UPDATE against non-SQL linked server,沒想到在SQL 2008 R2我還遇到類似的,解法之一就是改成在Local端執行Remote SP就可以了

        其實我要講的不是這個,我是要說我在測試機測過OK了,也用SQL Profiler錄製Local與Remote的SP,確定有捕捉到我要看的,也驗證一下資料確實都有更新,但當我在Production停機維護時更新上去,平測時用SQL Profiler錄製Local與Remote的SP時,卻只捕捉到Local的SP,Remote的SP卻怎樣也看不到,我心想是活見鬼嗎?百思不解怎麼會這樣,反覆在測試機試 都正常,後來才發現原來在Production上Local SP執行有錯,是因為RPC沒開,要是SQL Profiler我有加看Error欄位就可以提早發現問題了,下次要記得


        最後我是要說應該要有跟Production一樣設定的測試環境,才比較容易發現問題,像我是因為剛到新公司報到,發現沒有這樣的資源,或者我還沒法取得這樣的資源,我只好在自己的PC上架VM來當測試環境了,這樣的結果是不容易找問題啊

0 意見:

張貼留言