SQL Server最大内存,页面文件,最大并行度


15

希望您的DBA宇宙大师可以回答以下三个问题:


  1. 我知道设置SQL Server的最大内存是最佳实践。因此,如果具有44 GB RAM的服务器安装了SQL Server,则应将SQL Server最大内存设置为大约37GB。

但是,如果SQL Analysis Service和SQL Reporting Services与SQL Server安装在同一服务器上,我们应该设置什么?那么是否最好将SQL Server的最大内存设置为22GB RAM,以便Analysis可以占用其他22GB RAM?


  1. 在运行带有44 GB RAM的SQL Server的服务器上,设置页面文件大小的最佳实践是什么?我在Brent Ozar(http://www.brentozar.com/archive/2014/06/sql-server-setup-checklist-free-ebook-download/)上阅读了以下内容:

SQL Server不需要巨型页面文件。如果要在服务器上安装其他应用程序(不建议这样做,则应隔离SQL Server)。您可能需要更大的页面文件。如果SQL Server是包装盒上运行的唯一主要服务,则通常在系统驱动器上创建2GB大小的页面文件。

微软表示,我们应该将页面文件系统设置为RAM的1.5倍,这与Remus的建议相符(请参见-> http://rusanu.com/2009/11/22/system-pagefile-size-on-machines-with -large-ram /)。

因此,在具有44GB RAM的服务器上,我们在SQL Analysis Service和SQL Reporting Services旁边安装了SQL Server。我们应将页面文件设置为什么大小?


  1. 对于SharePoint是SharePoint场的一部分的SQL Server以及SharePoint存储数据库的位置,应该将最大并行度设置为1。现在,我们拥有的服务器不属于SharePoint场的一部分(称为sql2)。服务器上安装了SQL Server,SQL Analysis and Reporting。SharePoint不会在其服务器上存储其数据库,但是我们确实创建了SharePoint读写的报告和分析数据库/多维数据集。

布伦特·奥扎尔(Brent Ozar)说:

经验法则:将此值设置为硬件上的单个NUMA节点(处理器)插槽中的物理内核数或更少

当该SQL Server实例具有4个VCPU时,应在该SQL Server实例上为最大并行度配置什么?


希望你们不仅给我,而且让更多的SQL管理员对最佳实践的了解比与Internet上的丛林有关。

Answers:


12

你的3个问题触摸max memorypage filemax dop setting

最大记忆体


如果服务器是专用的SQL Server,仅不带Analysis服务(因为SSAS是另一种野兽),那么Glenn建议的最佳实践是一个很好的起点。有关其他组件,您应该参考Jonathan的博客,了解如何配置最大内存

我已经回答了有关SQL Server最大和最小内存配置的问题。如果您在服务器实例上运行许多SSIS软件包,这将很有帮助。

页面文件


我通常将其远离C:\具有足够磁盘空间的驱动器上的驱动器。我同意雷木思和布伦特的建议。应该是PAGE FILE FOR SQL SERVER = 1.5 * RAM。当您遇到必须进行FULL MEMORY DUMP(通常是Microsoft CSS要求)进行故障排除的情况时,页面文件将非常有用。

仔细阅读如何为Windows KB 889654的64位版本确定合适的页面文件大小Buck Woody在此处讨论页面文件

最大DOP设置


对于sharepoint,建议将maxdop = 1其设置为实例范围。对于普通的sql服务器,建议您遵循以下方法- 在SQL Server上计算MAXDOP的一种好方法是可重复的?我写了一个脚本,它将为您计算。

要点如下(KB 2806535也提到了同一件事):

8 or less processors    ===> 0 to N (where N= no. of processors)
More than 8 processors  ===> 8
NUMA configured         ===> MAXDOP should not exceed no of CPUs assigned to each 
                                 NUMA node with max value capped to 8
Hyper threading Enabled ===> Should not exceed the number of physical processors.

作为附带说明,我建议您阅读- 具有高性能工作负载的SQL Server 2012和SQL Server 2014的建议更新和配置选项


需要注意的一件事是,在上面引用的Buck Woody的博客文章中,Remus评论道:“节省一天的时间是AWE:通过AWE保留的内存不需要进行页面文件保留(因为它被锁定在物理RAM中,因此不能在x64上自动使用AWE。” 在AWE中似乎可以看到,我们不需要大页面文件。
杰森·卡特

@金你说“我同意雷木斯和布伦特的建议”。但是在浏览了《 Brent的安装指南》(上面的OP引用)和Remus Article之后,它们是矛盾的。因此,对我来说,您对页面文件的答案尚有待解决的问题。
Magier

1
@Magier我倾向于MS推荐,因为我遇到了需要进行全内存转储来诊断问题的情况-我们不知道它是Windows还是sql server。在那种情况下,MS推荐是最好的。如果您没有遇到这种情况,那么布伦特的建议也是有效的。我倾向于安全起见,所以我选择了PAGE FILE FOR SQL SERVER = 1.5 * RAM。这是否回答你的问题 ?
Kin Shah

3

因此,在具有44GB RAM的服务器上,我们在SQL Analysis Service和SQL Reporting Services旁边安装了SQL Server。我们应将页面文件设置为什么大小?

好吧,在Kin已经提到的内容之外,我建议您使用它Perfmon Counters来计算页面文件的大小。我也同意Remus建议页面文件应为系统RAM的1.5倍。但是,此建议正在考虑所有可能的方面和方案以及“一般建议”。我想您对具体价值更感兴趣。所以这是

单个系统的页面文件需求将根据服务器的角色,负载等而有所不同。您可以使用一些性能计数器来监视整个系统或每个页面文件的专用内存的使用情况。无法确定驻留进程的专用提交内存中的多少,以及将哪些页面调出到分页文件中。

内存:已提交的字节已提交的虚拟内存的字节数。这不一定表示页面文件的使用情况-它表示如果完全使进程不驻留在该进程中,将使用的页面文件空间量

内存:提交限制:无需扩展页面文件即可提交的虚拟内存的字节数。

分页文件:%使用率已提交的分页文件的百分比

分页文件:使用率高峰百分比已提交的分页文件的最高百分比

请使用以上计数器为页面文件设置适当的值。您可以阅读此链接以获取有关页面文件的更多信息。

那么是否最好将SQL Server的最大内存设置为22GB RAM,以便Analysis可以占用其他22GB RAM?

不,我不认为您在这里错过了操作系统要求。您首先需要为SQl Server设置最佳的最大服务器内存。该SE线程具有有关设置正确的最大服务器内存值的更多详细信息。我再次沉重地,总是在perfmon柜台上答复,以了解“ whiy”将是最佳价值。我建议您阅读本文,并寻求计数器的帮助来设置SSAS的最佳值。我曾经使用此博客来设置SSAS的内存值。我对SSAS的了解不多,所以我的评论将仅限于本文。

对于Sharepoint实例,应将MAXD​​OP = 1保持其广泛接受的参数。如果将最大并行度保留为默认值时遇到频繁的死锁,则 IIRC的建议被广泛接受


3

到目前为止,针对页面文件大小给出的所有其他答案都相对过时了。这篇Technet博客文章是最新的(2015年10月),并提供了一种更详细的方法来计算现代系统上理想的页面文件大小。

他们明确指出,不再适用1.5 x RAM的旧经验法则。

我在下面粘贴了该文章的核心内容,以避免链接腐烂。

请注意,他们建议您从服务器上收集指标,这些指标在高峰使用状态下运行至少1周-因此,在项目的规划和实施阶段,您可能无能为力,因此您将不得不花些时间在项目中这样做。


在调整页面文件大小时,我们需要考虑应用程序的内存需求和崩溃转储设置。

您如何知道应用程序需要多少内存?最好的方法是确定基准。

Run Performance Monitor (Perfmon)
Go to Data Collector Sets\User Defined
Right click on User Defined and select New
Select Create Manually and next
Check Performance counter
Add the following counters:

        Memory\Committed Bytes - Committed Bytes is the amount of committed virtual memory, in bytes.
        Memory\Committed Limit - Amount of virtual memory that can be committed without having to extend the paging file
        Memory\% Committed Bytes In Use - Ratio of Memory\Committed Bytes to the Memory\Commit Limit 

注意:确保长时间(至少一周)内收集信息,并且服务器以最高使用率运行。

页面文件大小公式应为:

(承诺字节的最大值+额外的20%缓冲区以容纳任何工作负载突发)-RAM大小

例如:如果服务器具有24 GB RAM,并且最大“提交的字节数”为26 GB,则建议的页面文件将为:(26 * 1.2)-24)= 7.2 GB

第二个因素是什么:系统崩溃时我们需要记录信息的大小?

内存转储的大小取决于其类型:

Complete Memory Dump  RAM Size + 257 MB
Kernel Memory Dump  The amount of kernel-mode memory in use (on 32-bit maximum is 2 GB, on 64-bit the maximum can go up until 8 TB)
Small Memory Dump  64KB  512 KB

在大多数情况下,内核内存转储足以用于根本原因分析,因为仅在特定情况下才需要完整内存转储,例如,您想查看用户模式下发生了什么。

根据我的经验,内核内存转储的大小通常如下:

On System with up to 256GB RAM =  8-12 GB size for Kernel Memory dump
On System with up to 1.5TB RAM = 8-32 GB size for Kernel Memory dump

但是,这些数字不是Microsoft的官方建议,并且在您的服务器上可能会有所不同,因此请在申请前进行测试。


2

因为我是您所引用的人之一,所以回答。

1.当我还运行Analysis Services时,应将最大内存设置为什么?

您不会在那里找到指导,因为SSAS就像在SQL Server上安装的任何其他应用一样:我们只是不知道您将使用多少内存。将SSAS / SSIS / SSRS视为第三方应用程序-它们恰好在“ SQL Server”框中被“免费”包含。它们具有完全不同的CPU,内存和存储需求。

2.我应该将页面文件大小设置为什么?

我的建议是使Windows可以进行小型转储。如果遇到需要致电Microsoft支持的问题,则可以从小型转储开始。如果问题再次出现,并且他们无法从小型转储(或其他信息源,如错误日志)中找出问题,那么他们可能会要求您将RAM大小提高到1.5倍。

Microsoft的1.5x RAM建议是,这样,当系统崩溃时Windows可以完全转储内存。

如今,对于具有64-128-256GB RAM的服务器,在崩溃期间让Windows暂停写出内存的全部内容通常不是一个好主意。您希望备份并运行SQL Server,并处理小型转储内容而不是全部内容。保存完整的转储以供以后使用-通常,您可以全职工作,而无需将64 + GB的转储文件上传到Microsoft。(祝你好运。)

3.如何将MAXD​​OP设置为SharePoint?

您所说的“我的”建议来自Microsoft KB 2806535。通常从这里开始,但是当特定的应用程序告诉您一些不同的内容时,他们就会知道自己的应用程序与一般的SQL Server有所不同,请遵循。

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.