原文: Linked Server performance tips

 

重點摘要:

透過linked server 所執行的遠端存取/交易,可能耗用大量的頻寬,所以在使用上,要注意能避免的overhead 要盡量避免。

  

當查詢裡包括遠端主機的資料時,用linked server 將比使用 OPENROWSET OPENDATASOURCE 來得有效率。

  

當需要遠端主機回傳資料時,盡量讓資料先在遠端過濾完畢後再回傳;亦即,只取回必要的資料就好,以避免額外的網路傳輸。OPENQUERY 可作到這樣的效果。

 

當遠端 DB 與近端 DB character set sort order (collation) 相同時,可將 SP_SERVEROPTION "collation compatible"選項打開,可增加效能;尤其當使用 WHERE 時,若選項不開啓,則 MS SQL 必須將遠端所有資料傳輸至近端後才能比對;若開啓,則可在遠端比對。

 

遠端主機最好與近端主機接同一台 switch,或至少在同一個 subnet 裡。

 

當以 Enterprise Manager Management Studio 建立一個 linked server 時,在 Server Option tab 裡,可以考慮設定 Connection Timeout 以及 Query Timeout 的值;預設值 0 表示不會 time out,設定該值可以幫助我們找出效能不彰的 Query

 

 

 

在預設的情形下, MS SQL 會將查詢盡量放在遠端,並只取回必要的資料, 但在下述情形下, MS SQL 可能必須先將所有資料取回:

  • Data conversion operations (eg: cast/convert)
  • 當用到 bit timestamp uniqueidentifier 等資料型態
  • 用到 "TOP" keyword
  • INSERTS UPDATES DELETES
  • 所以最好避免執行上述的遠端查詢/交易

 

最後, 善用 Query Analyzer 查看 query plan 以確保大多數的資料查詢是在遠端上執行,而非近端 DB

創作者介紹

A little IT experience/study/share garden

cbw0731 發表在 痞客邦 PIXNET 留言(0) 人氣()