天天看點

跟我一起學Microsoft SQL Server 2012 Internals(2.1)

目錄

    • 目錄
    • 簡述SQLOS
    • 正确了解SQL Server的NUMA架構
    • 參考資料

簡述SQLOS

如在“跟我一起學Microsoft SQL Server 2012 Internals(1.4) ”中提到的,SQL Server Operating System(即SQLOS),作為SQL Server的底層元件,銜接着windows作業系統,管理着部分作業系統的資源,其主要實作了如下幾個内容:

- 同步化

- 記憶體broker

- SQL Server異常處理

- 死鎖檢測

- 擴充事件

- 異步I/O

- CLR hosting

其中同步化,指的是SQL Server的自旋鎖(Spinlock)、互斥(mutexes )以及系統資源上的特殊讀與寫

正确了解SQL Server的NUMA架構

NUMA即Non-Uniform Memory Access,指的是對記憶體的非對稱性通路。微軟從SQL Server 2000 sp4開始就已經支援NUMA架構了。而在SQL Server 2005以上的資料庫引擎中,實作了2種NUMA架構,即軟體NUMA(soft-NUMA)與硬體NUMA(hardware-NUMA),預設使用硬體NUMA。

相對于對稱多處理架構(SMP,即symmetric multiprocessing),NUMA架構發揮CPU性能,讓每個CPU都有一個獨立的通道去控制獨自的記憶體與I/O。

下圖截取自《Microsoft SQL Server 2012 Internals》,展示了含有4個CPU的NUMA節點,通過記憶體控制器分别控制自己通道内的記憶體與I/O等。

跟我一起學Microsoft SQL Server 2012 Internals(2.1)

但NUMA架構也有缺點,缺點是2個node間的切換需消耗更多的資源。

我們可通過如下T-SQ代碼區分SQL Server啟用了何種NUMA。

--檢查是使用了軟NUMA或是硬NUMA
SELECT DISTINCT memory_node_id FROM sys.dm_os_memory_clerks
---------------------------------------------------------





           

注意: 上述顯示的結果中的64,其實是DAC node,是以這台伺服器使用了4個node,即使用了4核CPU的硬NUMA。關于DAC node可參考文章:The DMV sys.dm_os_memory_clerks May Show What Appears To Be Duplicate Entries

下圖是通過系統存儲過程sp_readerrorlog,檢視2核CPU安裝的SQL Server的啟動資訊:

跟我一起學Microsoft SQL Server 2012 Internals(2.1)

我們可在圖中看到此SQL Server使用了2個node的硬NUMA架構。

若是使用了軟NUMA(soft-NUMA),則可通過系統存儲過程sp_readerrorlog看到下圖所示内容(圖檔取自MSDN)

跟我一起學Microsoft SQL Server 2012 Internals(2.1)

若我們想使用軟NUMA,可需通過系統資料庫設定CPU的關聯。具體可參考文章:SQL Server and Soft NUMA

注意:SQL Server設定的軟NUMA的node數最大不可超過CPU的邏輯數。

參考資料

  1. 《Microsoft SQL Server 2012 Internals》 - chapter 2
  2. SQL SERVER對NUMA的支援

    https://technet.microsoft.com/en-us/library/ms178144%28v=sql.105%29.aspx

  3. Configure SQL Server to Use Soft-NUMA (SQL Server)

    https://msdn.microsoft.com/en-us/library/ms345357%28v=sql.110%29.aspx

  4. SQL SERVER對NUMA的支援

    https://blogs.msdn.microsoft.com/apgcdsd/2011/11/15/sql-servernuma/

  5. How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes

    https://blogs.msdn.microsoft.com/psssql/2010/04/02/how-it-works-soft-numa-io-completion-thread-lazy-writer-workers-and-memory-nodes/

update by HyperWang at 2016/03/28

繼續閱讀