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

来源:互联网 发布:菲尼克斯之光 知乎 编辑:程序博客网 时间:2024/06/06 09:16

目录

    • 目录
    • 简述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等。
NUMA

但NUMA架构也有缺点,缺点是2个node间的切换需消耗更多的资源。

我们可通过如下T-SQ代码区分SQL Server启用了何种NUMA。

--检查是使用了软NUMA或是硬NUMASELECT DISTINCT memory_node_id FROM sys.dm_os_memory_clerks---------------------------------------------------------012364

注意: 上述显示的结果中的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的启动信息:
CPU
我们可在图中看到此SQL Server使用了2个node的硬NUMA架构。

若是使用了软NUMA(soft-NUMA),则可通过系统存储过程sp_readerrorlog看到下图所示内容(图片取自MSDN)
MSDN

若我们想使用软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

0 0
原创粉丝点击