Sql-Server

在虛擬環境中使 用 DB2 連結伺服器進行慢速 SQL Server 查詢

  • July 11, 2014

我對使用連結伺服器的慢速查詢有疑問。讓我先列出我的環境,然後我會解決這個問題:

  • 虛擬 Windows 2003 R2 伺服器(XenServer 6.1 和 ESXi 5 上的全新部署)
  • SQL Server 2005 SP3
  • 使用 IBM DB2 for iBMASQL OLE DB Provider 創建的連結伺服器 在此處輸入圖像描述
  • 查詢本身是一個帶有 where 子句的 select 語句,用於選擇本月的交易。 在此處輸入圖像描述

好的,所以問題本身:

  • 虛擬機設置為 4 個 vCore,大約需要 35 秒才能完成
  • 虛擬機設置為 2 個 vCore,大約需要 20 秒才能完成
  • 虛擬機設置為 1 個 vCore,大約需要 5 秒才能完成

我試過修補:

  • 網卡設置
  • MAXDOP 1 選項
  • 看執行計劃

從這裡開始,我不知道該怎麼做。我們希望使用 4 個 vCore,因為伺服器將被大量使用。但是,與僅使用 1 個 vCore 相比,查詢需要更長的時間。

是否有任何可能的方法來限制連結伺服器使用的 vCore 數量?

還有什麼我應該看的嗎?

謝謝!

感謝 Jon Seigel,這似乎部分是由於 SQL 中的 CPU 親和性設置造成的。

我們使用來自映像的 SQL 部署此 VM,這會導致此處列出的已知問題(場景 #3):

刪除自動關聯選項並將關聯遮罩選項設置為使用所有可用的 CPU 解決了該問題。

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'affinity mask', 15;
RECONFIGURE;
GO
sp_configure 'show advanced options', 0;
RECONFIGURE;
GO

sql server affinity GUI

我們已更新我們的圖像以包含此選項。感謝大家在這個問題上的幫助。


請注意,此選項在 SQL Server 2012 中已棄用,不建議使用。此外,它還與 Windows 2000 和 Windows 2003 作業系統中的處理器執行緒處理有關。

引用自:https://dba.stackexchange.com/questions/33861