3 .6 .4 优化SQL Server内存酉己置

3 .6 .4 优化SQL Server内存酉己置
1 .最小和最大服务器内存
这两个配置用于控制SQL Server可用内存的大小。对于最小内存,在 SQL Server服务 启动时,不会马上达到这个设置值,而是仅使用最小的需求内存,然后按需增长,一旦增
长到最小内存设置值时,SQL Server将不会再释放内存。最大内存用于设置内存使用的上 限,可以使用SSMS或者sp_COnfigU re来配置。需要提醒的是,这里的“最大内存”实际

上指的是Buffer Pool,在 64位系统中,如果没有控制好内存而导致空闲的物理内存不足,

会引起Windows削减SQL Server的工作集。

如何计算合适的最大内存?可以参考以下信息。

(1 ) 监控SQL Server的最大内存使用情况 可以通过性能监视器的 MSSQL$<instance>:Memory Manager\Total Server Memory (K.B) 计数器来监控SQL Server总的Buffer Pool使用情况。如果SQL Server所需的物理内存超

过了现有的可用数量,这个值就会降低,而在释放内存后,这个值则会升高。可以在一开

始把这个值设置得低一点,然后通过监控来适当地进行调整。

(2 ) SQL Server潜在的最大内存使用

在考虑潜在使用时,很重要的一点是对连接服务器和外部存储过程的调用,在后期开

发中,这部分内容可能会非计划地加入。一般来说,每个线程会使用0.5MB (32位)或者

2MB (64位)的内存,还要保证大概有512MB可以用于这部分的使用。

另外,一些大型企业可能会使用第三方备份软件、杀毒软件等,这些也会影响SQL

Server的内存使用。最好预留1? 3GB的内存给这些软件使用。

2 .检查最大内存配置是否合理

在搭建新服务器时,该怎么去决定配置的最大服务器内存是多少呢?最直接的答案是:

从低开始设置,然后进行周期性监控(开始时监控周期要比较短,以便尽快发现问题),并

按需调整。或者使用性能计数器来监控,比如通过MSSQL$<instance>:Buffer Manager\Page Life Expectancy (PLE)和 Memory\Available Mbytes 来监控。

PLE计数器用于表示SQL Server的数据缓存在内存中的时间,在理想情况下该时间越 长越好,这是内存压力指标之一。如果小于300s,就要检查指标Available Mbytes 了。 Available Mbytes表示Windows上当前有多少物理内存没有被使用。国外专家建议的 标准是最少保留100MB。当然不要把最低标准当作最低配置,应尽可能保证有GB级别的

可用内存。

如果PLE很低,但是可用内存数很高,那么应该调高最大服务器内存,因为这样可以

增加PLE的时间。相反,如果可用内存很低,但是PLE很高,那就需要降低最大内存配置

来释放内存给Windows。下面是部分配置示例。 □最大服务器内存30GB,服务器有32GRAM,PLE平均值为10000,可用内存为

90M B,那么最少降低500MB最大服务器内存。

□最大服务器内存46G B ,服务器有50G RAM, PLE平 均 值 为 1 0 .可用内存为

1500MB,那么应提高最大服务器内存500? 1000MB。

□最大服务器内存60G B ,服务器有60GRAM, PLE平均值为5 0 ,可用内存为20M,

那么应降低100MB最大内存,或者增加更多的RAM (最直接的方法)。

3 . 锁定内存页

锁定内存页(Lock Pages in Memory, LPIM )是在 Windows 和 SQL Server 之间发生问

题时的应急处理方案,在旧版本(比如Windows Server 2003及以前版本)中,效果不佳。 如果在操作系统上没有充足的物理内存可用于支持其他请求,会强制回收某些应用的内

存。这对SQL Server的内存分配是毁灭性打击。可能会在SQL Server的错误日志中看到 类似的话。

A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 1086400, committed (KB): 2160928, memory utilization: 50%.

从 Windows Server 2008开始,这个现象有了明显的改进,但是还会出现。对于这类情 况,可以把最大服务器内存调整到适当的大小,保证Windows有足够的内存来运行其他应 用。另外也可以使用SQL Server来锁定内存页。 如果启用了 LPIM, SQL Server的 Buffer Pool页 会 被 “锁定”,并且不允许操作系统 强行收回=在页被锁定之后,这部分空间将不会算人可用内存中。但是只有SQL Server的 Buffer Pool分配的页才可以被锁定,操作系统依旧可以收回其他内存,包括SQL Server依 赖的进程内存。

原文地址:https://www.cnblogs.com/zhouwansheng/p/9243929.html

时间: 2024-10-07 22:15:38

3 .6 .4 优化SQL Server内存酉己置的相关文章

50种方法优化SQL Server数据库查询(转载)

原文地址:http://www.cnblogs.com/zhycyq/articles/2636748.html 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用

SQL Server 内存中OLTP内部机制概述(一)

----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory OLTP Internals Overview>:http://technet.microsoft.com/en-us/library/dn720242.aspx ----------------------------我是分割线------------------------------- SQL S

(译)内存沉思:多个名称相关的神秘的SQL Server内存消耗者。

原文:(译)内存沉思:多个名称相关的神秘的SQL Server内存消耗者. 原文出处:https://blogs.msdn.microsoft.com/sqlmeditation/2013/01/01/memory-meditation-the-mysterious-sql-server-memory-consumer-with-many-names/ 对于多个不同名称的内存消费者 你曾经是否想知道内存授予是什么(Memory grants )?什么是查询执行的保留(预定)内存(QE Reser

SQL Server 内存中OLTP内部机制概述(二)

----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory OLTP Internals Overview>:http://technet.microsoft.com/en-us/library/dn720242.aspx 译者水平有限,如有翻译不当之处,欢迎指正. ----------------------------我是分割线---------------

SQL Server内存不足解决,以及涉及到的知识点

首选,感谢博主shield-hand的一篇文章(ms sql server缓存清除与内存释放).写的非常细致.简洁.我这里并不是自己写博客,而是用自己的思维将众多博文或官网资料做一次整合.  在讲解问题发生原因之前,我先贴出来解决方案.之后再详细剖析其深层次的原因. ms sql server缓存清除与内存释放这篇文章已经给出了非常完美的方案,我就不再赘述了.有一个问题需要注意下,就是脚本操作中最好修个成以下形式: USE [IVMS8100] GO /****** Object: Stored

SQL Server 内存中OLTP内部机制概述(三)

----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory OLTP Internals Overview>:http://technet.microsoft.com/en-us/library/dn720242.aspx 译者水平有限,如有翻译不当之处,欢迎指正. ----------------------------我是分割线---------------

SQL Server内存理解的误区

SQL Server内存理解 内存的读写速度要远远大于磁盘,对于数据库而言,会充分利用内存的这种优势,将数据尽可能多地从磁盘缓存到内存中,从而使数据库可以直接从内存中读写数据,减少对机械磁盘的IO请求,提高数据读写的效率. 内存对数据库而言是如此的重要,因此只要在涉及数据库优化的地方,我们都可以看到内存的身影.我们通常会想尽各种办法来优化数据库内存的使用,比如开启AWE.设置最大内存.锁定内存页等,但在很多时候,我们实际上都不知道某个配置是否一定能够解决当前的问题,或者我们误以为会解决当前的问题

转载 50种方法优化SQL Server数据库查询

原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷

SQL Server 内存中OLTP内部机制概述(四)

----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory OLTP Internals Overview>:http://technet.microsoft.com/en-us/library/dn720242.aspx 译者水平有限,如有翻译不当之处,欢迎指正. ----------------------------我是分割线---------------