为SQL Server和NUMA配置RAM


10

偶然的数据库管理员在这里。

题:

即使该服务器的唯一目的仅是为SQL Server数据库引擎提供服务,您是否仍会手动限制SQL Server的最大RAM?

我有Microsoft Windows 2012 R2 Server,SQL Server 2012 Std,32GB RAM。

管理员不断登录到SQL Server,以使用其控制台和所有控制台。

其次,如何检查此Windows服务器是否启用了NUMA?

Answers:


9

即使该服务器的唯一目的是仅服务MSSQL,您是否仍会手动限制MSSQL的最大RAM?

考虑到这里有SQL Server 2012,这是个值得商topic的话题。如果您对Windows Server 2003/2008上的SQL Server 2005/2008提出相同的问题,由于Windows操作系统(2003/2008)中存在错误,强烈建议设置最大服务器内存限制。但是,如果您提出我的看法,则从SQL Server 2012起和Window Server 2008/2012 r2起,内存配置和OS性能分别发生了显着变化You can leave max server memory configuration to default if you have enough RAM on system and you are just using database engine features.。本身,如果您有专门用于SQL数据库引擎的系统,则可以将SQL Server的最大服务器内存保留为默认值,SQL Server将对其进行有效管理。

无论如何,如果仍然要配置,可以阅读此SE线程上给出的类似问题和解答

在某些情况下需要最大服务器内存,我在此SE线程中已对此进行了概述

其次,如何检查此Windows服务器是否启用了NUMA?

稍作搜索就会带您到此Blogs.msdn文章。当SQL Server知道NUMA并且正在使用它时,它具有各种图形描述。


2
我喜欢使用Brent Ozar的表来快速参考一般用例的内存设置。
LowlyDBA 2015年

3
当然,这是快速参考,可以作为值的起点。我非常确定,如果您问他,他会说您需要进一步查看性能计数器以达到最佳价值。这就是为什么我添加SE链接的原因,以防OP想要设置最大服务器内存。
Shanky 2015年

2

SQL NUMA知道,因此您可以NUMA使用查询查找信息。您还可以使用此查询来查看NUMA您拥有多少个节点以及将哪些CPU和内核分配给哪个NUMA

SELECT parent_node_id, scheduler_id, cpu_id
FROM sys.dm_os_schedulers WITH (NOLOCK) 
WHERE [status] = N'VISIBLE ONLINE';

或多少NUMA

select COUNT(distinct Parent_node_id)
from sys.dm_os_schedulers
where [STATUS] = 'VISIBLE ONLINE'
    and Parent_node_ID < 64

-2

是的,即使服务器只有一个用途,也应限制SQL Server的最大内存。否则,SQL Server可能会开始使用Windows本身需要良好运行的内存。通常,根据需要,将1GB->总RAM的20%留给Windows。

通过选择一个进程,右键单击并选择“设置关联性”,可以在任务管理器中显示服务器的NUMA配置。Windows资源监视器还显示NUMA信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.