清理SQL SERVER内存解决内存占用高的问题

----自动强制释放内存的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')  

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

        WAITFOR DELAY '00:01:30'  

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

        EXEC sp_configure 'max server memory', 3000  

        EXEC ('RECONFIGURE')  

--关闭高级配置  

        EXEC sp_configure 'show advanced options', 0
             
END

微软SQL Server 2008 R2中的资源分配方式与SQL Server 2005中的方式相比是一种完全不同的过程。利用资源控制器,在SQL Server 2008 R2中解决方案供应商有切实可用的方法管理CPU和内存。   资源消耗是长期以来困扰使用SQL Server解决方案供应商的基本问题之一。任何服务器,不管它是物理的还是虚拟的,供处置的CPU和内存池都是有限的。过去,这一简单的事实给SQL Server带来许多麻烦,因为它通常是资源非常敏感的应用。   如果服务器上只托管了唯一一个数据库的话,那么SQL Server资源消耗并不是个严重的问题。但是如果有多个数据库在用着,那就真的变成一个问题了,因为各种数据库都会竞争同样一组CPU和内存资源。   在SQL Server 2005中,对这个问题可以接受的解决方案通常是为每个数据库创建独立的SQL Server实例,利用处理器亲和度为每个数据库实例分配资源。这种技术的问题是一旦资源被分配给SQL Server实例,他们对其他SQL Server实例就不可用了。结果,如果一个数据库的负载特别重,它也不可能从其他SQL实例暂借服务器的CPU资源,虽然这个实例上的资源此时可能什么都没做。   一些解决方案供应商也曾尝试利用服务器虚拟化作为给个别SQL Server数据库分配资源的一种途径。在这种模型中,每台虚拟机只托管一个SQL Server数据库。这种方法也可行,但是虚拟机和他们的操作系统也消耗了一些本该用于SQL Server的服务器资源。此外,还依赖于你使用的虚拟化软件,以按需分配为基础的资源动态分配可能有些困难或者不可能实现。   微软最终针对SQL Server 2008 R2中的资源分配问题创建了一套可行的解决方案,引入了叫做资源控制器的新组件。这个资源控制器是可以通过微软SQL Server Management Studio访问的,它可以定义资源池,每个资源池都包含负载工作组,如下图所示:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哇哈哈AD钙奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值