Maison > Article > base de données > SQLSERVER中的NUMA架构
SQLSERVER中的NUMA架构 之前看了园子里的宋大侠《浅谈SQL Server 对于内存的管理》的文章,里面讲到NUMA架构,究竟NUMA架构是啥东西 网上的资料说得让人一头雾水 刚好上星期在MSDN上找到一篇关于NUMA架构的文章,文章是2011年写的,现在分享给大家o(_)o 文章
SQLSERVER中的NUMA架构
之前看了园子里的宋大侠《浅谈SQL Server 对于内存的管理》的文章,里面讲到NUMA架构,究竟NUMA架构是啥东西
网上的资料说得让人一头雾水
刚好上星期在MSDN上找到一篇关于NUMA架构的文章,文章是2011年写的,现在分享给大家o(∩_∩)o
文章:SQL SERVER在NUMA架构下实现性能最佳化
就目前而言,CPU主频速度的迅速提升以及CPU数量的高速增长,并没有能够促使CPU在访问内存时的速度有所长进。
尽管L3 Cache的提出解决了部分问题,美国空间,不过,CPU访问内存速度慢的现象并未有所改观,瓶颈依然存在。
为了更有效的解决CPU访问内存的速度问题,工业界引入了NUMA概念
首先介绍一下 NUMA 的架构,如下图:
每个 NUMA 节点(硬件 NUMA 或软件 NUMA)都有一个用于处理网络 I/O 的相关 I/O 完成端口,这有助于跨多个端口分布网络 I/O 处理
上述结构中展现出两个NUMA结点,每个NUMA结点有一些CPU, 一个内部总线,和自己的内存,甚至可以有自己的IO。每个CPU有离自己最近的内存可以直接访问。
所以,使用NUMA架构,系统的性能会更佳。值得注意的是,在NUMA结构下,服务器空间,可以比较方便的增加CPU的数目。
而在非NUMA架构下,增加CPU会导致系统总线负载很重,性能提升不明显。
虽然每个CPU也可以访问其他NUMA结点上的内存,但付出的代价则是导致速度更慢,这是要尽量避免的。
应用软件如果没有意识到这种结构,在NUMA机器上,有时候性能会更差,网站空间,这是因为,他们经常会不自觉的去访问远端内存,从而导致整体性能下降。
通常而言,NUMA架构也有硬件和软件之分。
一、硬件NUMA
硬件NUMA是在硬件层面上得以支持。如何才能知道本机是否有硬件NUMA呢? 最好的办法是问硬件供应商了。
但如果想知道机器中有多少个NUMA结点,那就可以在SQL Server Management Studio下用如下的查询,看能返回几个NUMA结点
memory_node_id FROM sys.dm_os_memory_clerks