sql server 对象资源管理器(二)

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 ;
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

转载于:https://www.cnblogs.com/lx823706/p/5507921.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值