MsSql

关注公众号 jb51net

关闭
首页 > 数据库 > MsSql > SQL Server 内存占用高

SQL Server 内存占用高分析及问题解决办法

作者:古渡蓝按

文章详细分析了SQL Server内存占用高的问题,包括数据缓存和执行命令缓存的机制,并提供了解决办法,如清除缓存、设置内存最大占用值等,感兴趣的朋友跟随小编一起看看吧

SQL Server 内存占用高分析及解决办法(超详细)

一、问题

1.1、SQL Server内存占用高 ,内存不释放

1.2、SQL Server 内存使用策略

SQL Server对服务器内存的使用策略是有多少占多少(大约到剩余内存为4M左右)只用在服务器内存不足时,

才会释放一点占用的内存,所以很多时候,我们会发现运行SQL Server的系统内存往往居高不下这些内存一般都

是SQL Server运行时候用作缓存的。

数据缓存:

例如:你运行一个select语句,那么SQL Server会将相关的数据页(SQL Server操作的数据都是以页为单位的

SQL Server中页的大小始终是8kb的大小,页有不同的类型:数据页,索引页,系统页等等)加载到内存中进行

缓存,以便于再次请求此页的数据的时候,直接从内存返回,就无需读取磁盘了,大大提高了速度。

执行命令缓存:

如执行存储过程,自定函数时,SQL Server 需要先二进制编译再运行,编译后的结果也会缓存起来,再次调用时就无需再次编译。

二、解决办法

当我们知道SQL Server 内存占用方式,就有以下两种解决办法

-- 查看内存使用情况,这个会返回多个结果集数据,可以有助于我们排查内存问题
DBCC MemoryStatus

结果集部分重要指标解释(请注意,DBCC MEMORYSTATUS的输出格式和内容可能会随着SQL Server版本的不同而有所变化):对指标不感兴趣,一股脑解决问题可跳过 如下指标查看,直接到下面 缓存清除命令

1、Total Server Memory (KB)

2、Target Server Memory (KB)

3、Memory Grants Outstanding

4、Page Life Expectancy (PLE)

5、Available Physical Memory (KB)

6、Available Paging File (KB)

7、Percent of Committed Memory in WS

8、System Physical Memory Low

9、Page Faults

10、Memory Grants Pending

11、Lock Pages in Memory Usage (KB)

12、Large Pages Allocated (KB)

这些关键指标提供了关于SQL Server内存使用情况的全面视图,并且对于诊断性能问题非常有价值。通过定期监控这些指标,可以及时发现潜在的问题,并采取适当的措施来优化SQL Server的性能。此外,结合动态管理视图(DMVs),如sys.dm_os_memory_clerkssys.dm_exec_query_memory_grants等,以及性能计数器,可以获得更加详细的洞察力,从而更好地管理和调优SQL Server实例。

缓存清除命令

-- 临时清除缓存命令
DBCC FREEPROCCACHE --清除存储过程相关的缓存
DBCC REESESSIONCACHE --清除会话缓存
DBCC FREESYSTEMCACHE('All') --清除系统缓存
DBCC DROPCLEANBUFFERS --清除所有缓存

以上命令虽然会清除掉现有缓存,为新的缓存腾出空间,但是Sql server并不会因此释放掉已经占用的内存。Sql

Server并没有提供任何命令允许我们释放不用到的内存。因此我们只能通过动态调整Sql Server可用的物理内存设

置来强迫它释放内存。

如果想让 Sql Server 主动释放 占用并空闲的内存空间,可以设置Sql Server占用内存的上限,就会让Sql server在

内存上限范围内,主动清除脏数据替换成热数据。因此还得如下操作

三、设置内存最大占用值

设置方式:

从自带的studio 连接,,在数据库服务器名称上点击【右键】,选择【属性】,然后,找到【内存】选项,在右边的【使用AWE分配内存】(sqlServer64的应该不用勾)左边把对勾打上。在最大服务器内存(MB)上填入适当的大小(具体填多大,肯定不能超过计算机的物理内存,建议控制在60%-75%),设置成功后重启

四、 其他

结果集图片:执行 DBCC MemoryStatus

到此这篇关于SQL Server 内存占用高分析及解决办法(超详细)的文章就介绍到这了,更多相关SQL Server 内存占用高内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文