sqlserver对象资源管理器(⼆)
SQL会缓存⼤量的数据页⾯,他还会缓存很多其他信息,包括存储过程的执⾏计划,特定⽤户的安全上下⽂等
如果这些信息没有在数据库中缓存,SQL都要重新计算⼀遍,花额外的时间,所以SQLSERVER对内存的需求是⼗分强烈的。
配置原则:
(1)如果服务器⽀持64位操作系统,没有特殊理由的话,请安装64位系统。这样SQL能够有效地使⽤⼤于2GB的内存。如果⼀定要⽤32位系统,务必将SQLSERVER服务器属性⾥⾯的“使⽤AWE分配内存”打开。但是不要⽤boot.ini⽂件⾥的/3GB这个开关,即不要在boot.ini⽂件⾥加上/3GB这个参数。
(2)尽量使服务器专门供数据库使⽤,不要将其他服务(例如IIS,中间层应⽤服务等)安装在同⼀台机器上。多个⽣产应⽤服务在同⼀台机器上运⾏,会⼤⼤增加维护成本
(3)建议设置SQLSERVER max server memory(最⼤服务器内存),以确保Windows有⾜够的内存供系统本⾝使⽤。
情况归纳如下:
⼀台4GB机器,建议预留1GB,设置SQLSERVER max server memory为2.8GB
⼀台8GB机器,建议预留2GB,设置SQLSERVER max server memory为6GB
⼀台⼤于8GB的64位机器,建议预留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 ;
windowsserver2012四个版本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$<instance>:Memory Manager\Total 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⼯作线程。你可以查询sys.dm_os_sys_info来获取最⼤⼯作线程数,每个线程会使⽤0.5MB(在x86系统),2MB(在x64)
512MB,如果你⽤Linked servers、扩展存储过程dll,或通过⾃动化程序(Automation procedures (sp_OA calls))创建的对象
1~3GB,⽤于其他可能再系统上运⾏的应⽤程序,如备份程序或反病毒软件
例如,在⼀个有8个CPU内核、64GB RAM、运⾏SQL Server 2012、⼀个第三⽅备份⼯具和病毒检测程序的服务器上,你将考虑如下情况:
2GB⽤于Windows
1GB⽤于⼯作线程(576 X 2MB四舍五⼊)
512MB⽤于Linked Server等
1GB⽤于备份程序和病毒检测程序
共计4.5GB,你可以将Max Server Memory配置为59.5GB