Sql-Server
在虛擬環境中使 用 DB2 連結伺服器進行慢速 SQL Server 查詢
我對使用連結伺服器的慢速查詢有疑問。讓我先列出我的環境,然後我會解決這個問題:
- 虛擬 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 2012 中已棄用,不建議使用。此外,它還與 Windows 2000 和 Windows 2003 作業系統中的處理器執行緒處理有關。