Sql-Server

當 MAXDOP 設置為 1 時,如何從 VMware 調配更多 CPU?

  • November 24, 2020

我們有一個託管在七台伺服器上的 BizTalk Server 組,所有伺服器都託管在 VMware 中。該組包括四個 BizTalk 應用程序伺服器和三個 SQL Server 實例。

根據 Microsoft 對 BizTalk 的開箱即用配置,組中的一個 SQL Server 實例有意將其 MAXDOP 設置為 1。根據 Microsoft 的說法,不得更改此設置。

我們認為在這個 SQL 實例上執行的一些查詢可能是 CPU 密集型的,並且想考慮我們是否可以提升這個特定虛擬機的 CPU 資源。

我的理解是添加額外的 vCPU 核心是沒有意義的:MAXDOP 設置為 1,因此任何受 CPU 約束的查詢都無法使用任何額外的 CPU 核心,因為它們可能不會執行並行操作。

在這種情況下可以做任何事情嗎?我的假設是虛擬機中 vCPU 的時鐘速度與 VMware 主機中物理 CPU 的時鐘速度相同,因此沒有辦法提高它。

  • 我上面的所有假設都正確嗎?
  • 如果是這樣,這是否意味著無法提高這些查詢可用的 CPU?
  • 我們還有什麼可以做的嗎?

我上面的所有假設都正確嗎?

是的,據我所知,你在所有方面都是正確的。

如果是這樣,這是否意味著無法提高這些查詢可用的 CPU?

鑑於您所描述的限制,為這些查詢“提升 CPU”的唯一方法是將 VM 移動到具有更快時鐘速度的 CPU 的主機上。

我們還有什麼可以做的嗎?

您最好的選擇可能是辨識有問題的查詢並設置計劃指南以向這些特定查詢添加MAXDOP提示。這將覆蓋伺服器級別設置,因此這些特定查詢將並行進行,而其餘查詢仍將處於 DOP 1。

其他一些不太理想/更可能導致問題的選項:

  • 將伺服器級別MAXDOP從 1 提高 - 這當然違背了配置指南,但它是一個可用的選項來測試並查看它是否有益於這些有問題的查詢而不會對其他查詢造成太大傷害
  • 添加更多 CPU - 這對受 CPU 限制的單個查詢沒有幫助,但它可能允許更多查詢同時執行。根據工作負載的細節,這可能會有所幫助或有害。例如,一次執行更多查詢可能只會導致爭用(鎖或 tempdb 或其他東西),而不是增加吞吐量

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