技术栈:如何清理SQL SERVER内存解决内存占用高的问题

360影视 国产动漫 2025-05-16 20:01 2

摘要:本文讨论了SQL SERVER内存占用高的问题,并介绍了三种解决方法。重点讲述了第三种方法:通过SQL Server Management Studio配置定时作业,使用SQL脚本自动定时清理内存,确保每天凌晨3点执行,以减少内存占用。同时,也提及了第二种方法

本文讨论了SQL SERVER内存占用高的问题,并介绍了三种解决方法。重点讲述了第三种方法:通过SQL Server Management Studio配置定时作业,使用SQL脚本自动定时清理内存,确保每天凌晨3点执行,以减少内存占用。同时,也提及了第二种方法,即通过调整服务器最高内存值来释放内存,并提供了详细的脚本示例。

服务器维护中过程中,经常碰到SQL SERVER 内存占用高的问题,让人非常头疼。

第一种方法,可以通过重启SQL SERVER服务释放内存,但是生产服务器环境一般不允许随便重启 SQL SERVER服务。

第二种方法,通过设置服务器最高内存值的方法来释放内存,具体操作是先把服务器最大内存设置成一个小值,但不能太小,太小容易使SQL SERVER挂掉,然后再把服务器最大内存值设置回合适的值,建议占服务器总内存的80%。

第三种方法,通过定时服务定时检查并自动强制释放内存。

本文主要介绍第三种方法的具体操作步骤。

登陆SQL Server。准备自动强制释放内存的SQL脚本。本文结束后有SQL脚本内容。选中SQL SERVER代理下级作业节点右键新建作业。作业名称填“每天凌晨3点定时清理内存”。配置作业的步骤。在新建作业弹出窗口中,选步骤页面,按下图中的7个步骤完成配置后点确定。配置作业的计划。在新建作业弹出窗口中,选计划页面,按图中的9个步骤完成配置后点确定。完成作业的计划配置后,点确认,每天凌晨3点定时清理内存的定时作业就完成了配置了。总结操作步骤1. 登陆SQL Server。2. 准备自动强制释放内存的SQL脚本。3. 选中SQL SERVER代理下级作业节点右键新建作业。4. 配置作业的步骤。5. 配置作业的计划。6. 完成作业的计划配置后,点确认,每天凌晨3点定时清理内存的定时作业就完成了配置了。第二种方法,通过设置服务器最高内存值的方法来释放内存,具体操作是先把服务器最大内存设置成一个小值,但不能太小,太小容易使SQL SERVER挂掉,然后再把服务器最大内存值设置回合适的值,建议占服务器总内存的80%。请查看本人写的另一篇经验2SQL Server内存占用高不释放怎么办附加参考内容SqlScript。

----自动强制释放内存的SqlScript脚本

DECLARE @TargetMemory decimal(19,2),@TotalMemory decimal(19,2),@UseMemoryPecent decimal(19,2)

SELECT @TargetMemory=cntr_value FROM sys.dm_os_performance_counters

WHERE counter_name='Target Server Memory (KB)'

SELECT @TotalMemory=cntr_value FROM sys.dm_os_performance_counters

WHERE counter_name='Total Server Memory (KB)'

SET @UseMemoryPecent=@TotalMemory/@TargetMemory

SELECT @UseMemoryPecent

IF @UseMemoryPecent>0.1

BEGIN

--清除存储过程缓存

DBCC FREEPROCCACHE

--清除会话缓存

DBCC FREESESSIONCACHE

--清除系统缓存

DBCC FREESYSTEMCACHE('All')

--清除所有缓存

DBCC DROPCLEANBUFFERS

--打开高级配置

EXEC sp_configure 'show advanced options', 1

--设置最大内存值,清除现有缓存空间 1000 M (根据实际情况设置,具体思路是最大值先调小,然后再设回合适的值。)

EXEC sp_configure 'max server memory', 1000

EXEC ('RECONFIGURE')

--设置等待时间,强制释放内存需等待一些时间

WAITFORDELAY'00:01:30'

--重新设置最大内存值 3000 M 根据实际情况设置,具体思路是最大值先调小,然后再设回合适的值。)

EXEC sp_configure 'max server memory', 3000

--关闭高级配置

EXEC sp_configure 'show advanced options', 0

来源:小园说科技

相关推荐