2023年11月30日发(作者:)

sqlserver对象资源管理器(⼆)

SQL会缓存⼤量的数据页⾯,他还会缓存很多其他信息,包括存储过程的执⾏计划 ,特定⽤户的安全上下⽂等

如果这些信息没有在数据库中缓存,SQL都要重新计算⼀遍,花额外的时间,所以SQLSERVER对内存的需求是⼗分强烈的。

配置原则:

1)如果服务器⽀持64位操作系统,没有特殊理由的话,请安装64位系统。这样SQL能够有效地使⽤ ⼤于2GB的内存。如果⼀定要⽤32

系统,务必将SQLSERVER服务器属性⾥⾯的使⽤AWE分配内存打开。但是不要⽤⽂件⾥的/3GB这个开关,即不要在⽂件

⾥加上/3GB这个参数。

2)尽量使服务器专门供数据库使⽤,不要将其他服务(例如IIS,中间层应⽤服务等)安装在同⼀台机器上。多个⽣产应⽤服务在同⼀台机

器上运⾏,会⼤⼤增加维护成本

3)建议设置SQLSERVER max server memory(最⼤服务器内存),以确保Windows有⾜够的内存供系统本⾝使⽤。

情况归纳如下:

⼀台4GB机器,建议预留1GB,设置SQLSERVER max server memory2.8GB

⼀台8GB机器,建议预留2GB,设置SQLSERVER max server memory6GB

⼀台⼤于8GB64位机器,建议预留3GB~4GB

如果⼀台服务器上还有其他应⽤使⽤内存,也要扣除他们的内存使⽤数

⼀般设置SQLSERVER min server memory(最⼩服务器内存)意义不⼤

sqlserver最⼤服务器内存设置(通过T-sql设置):

sp_configure 'show advanced options',1;

go

reconfigure

go

sp_configure 'max server memory',60000;

go

reconfigure

go

sqlserver修改每次查询最⼩内存:

EXEC sp_configure 'show advanced options', 1;

GO

RECONFIGURE ;

GO

EXEC sp_configure 'min memory per query', 3500 ;

GO

RECONFIGURE;

GO

相关解释:

最⼩和最⼤Server内存

Min Server Memory (MB) Max Server Memory (MB)控制所有SQL Server内存使⽤的许可⼤⼩。⽐起之前的版本,SQL Server 2012

Memory Manager可以更简单地设置SQL Server内存需求的⼤⼩。SQL Server服务是以所需的最⼩量启动的,并根据需要增长。⼀旦内存使

⽤增长超过Min Server Memory设置,SQL Server将不会释放任何低于该量的内存。Min Server Memory设置内存使⽤的下限,⽽Max

Server Memory则设置上限。这两个值可以使⽤sp_configure或通过Management Studio中的SQL Server属性窗⼝的内存页⾯进⾏设置。两

个设置中,配置缓冲池的最⼤值更重要,它会阻⽌SQL Server占⽤过多的内存。这在64位系统中尤其重要,因为缺少可⽤物理内存能够导

Windows裁剪SQL Server的⼯作集。后⾯的锁定内存页有关于这个问题的完整描述。对于配置Max Server Memory,有⼀些不同的⽅法

来计算合适的值,最直接的⽅法是看看SQL Server的最⼤使⽤量,及确定SQL Server之外内存需求的最⼤潜在⽤量。

查看SQL Server的最⼤使⽤量

设置SQL Server动态管理内存,然后使⽤性能监视器监视计数器MSSQL$:Memory ManagerTotal ServerMemory (KB)。这个计

数器测量SQL Server的总缓冲池使⽤量。如果SQL Server以外的其他需求需要⽐当前可⽤内存更多的物理内存时,Total Server Memory

会降低,然后使⽤任何可⽤内存再增加。如果您监视此计数器⼀段时间(包括忙时和淡时),然后你就可以将Max Server Memory设置为你

观察到的Total Server Memory (KB)的最低值,你不必担⼼SQL Server在正常操作期间收缩它的使⽤量。

确定SQL Server之外内存需求的最⼤潜在⽤量

此选项是最流⾏的,因为其⽬的是计算出最坏的情况下,除SQL Server之外的内存需求。你应该考虑如下情况:

2GB⽤于Windows

xGB⽤于SQL Server⼯作线程。你可以查询_os_sys_info来获取最⼤⼯作线程数,每个线程会使⽤0.5MB(在x86系统),2MB(在

x64

512MB,如果你⽤Linked servers、扩展存储过程dll,或通过⾃动化程序(Automation procedures (sp_OA calls))创建的对象

1~3GB,⽤于其他可能再系统上运⾏的应⽤程序,如备份程序或反病毒软件

例如,在⼀个有8CPU内核、64GB RAM、运⾏SQL Server 2012、⼀个第三⽅备份⼯具和病毒检测程序的服务器上,你将考虑如下情

况:

2GB⽤于Windows

1GB⽤于⼯作线程(576 X 2MB四舍五⼊)

512MB⽤于Linked Server

1GB⽤于备份程序和病毒检测程序

共计4.5GB,你可以将Max Server Memory配置为59.5GB