释放SQL Server占用的内存
由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存。所以很多时候,我们会发现运行Sql Server的系统内存往往居高不下。
这些内存一般都是Sql Server运行时候用作缓存的,例如你运行一个select语句,那么Sql Server会将相关的数据页(Sql Server操作的数据都是以页为单位的)加载到内存中来,下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。这类的缓存叫做数据缓存。还有一些其他类型的缓存,如执行存储过程时,Sql Server需要先编译再运行,编译后的结果也会缓存起来,下一次就无需再次编译了。如果这些缓存已经不需要了,那么我们可以调用以下几个DBCC管理命令来清理这些缓存:
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
这几个命令分别用来清除存储过程相关的缓存、会话缓存、系统缓存以及所有所有缓存。详细的使用参考MSDN。
但是需要注意的是,这几个命令虽然会清除掉现有缓存,为新的缓存腾地方,但是Sql server并不会因此释放掉已经占用的内存。无奈的是,Sql Server并没有提供任何命令允许我们释放不用到的内存。因此我们只能通过动态调整Sql Server可用的物理内存设置来强迫它释放内存。
USE master
-- 打开高级设置配置 EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
-- 先设置物理内存上限到1G EXEC sp_configure 'max server memory (MB)', 1024
RECONFIGURE WITH OVERRIDE
-- 还原原先的上限 EXEC sp_configure 'max server memory (MB)', 5120
RECONFIGURE WITH OVERRIDE
-- 恢复默认配置 EXEC sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE
我们也可以通过Sql Server Management企业管理器进行动态控制。连接到企业管理器之后打开Sql Server实例的属性面板,找到内存设置,改变其中的最大服务器内存使用即可。
释放SQL Server占用的内存的更多相关文章
- 释放SQL Server占用的内存 .Net 读取xml UrlReWriter 在web.config中简单的配置
释放SQL Server占用的内存 由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存.所以很多 ...
- SQL Server占用服务器内存过高
SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高. 查看内存状态: DBCC M ...
- SQL Server占用内存的认识
SQL Server占用的内存主要由三部分组成:数据缓存(Data Buffer).执行缓存(Procedure Cache).以及SQL Server引擎程序.SQL Server引擎程序所占用缓存 ...
- SQL Server 与 Windows 内存使用上的约定
什么时候SQL Server 会释放出自己的内存!以提供给别的程序用呢? --------------------------------------------------------------- ...
- SQL SERVER 占用资源高的SQL语句
--SQL SERVER 占用资源高的SQL语句: --查询占用cpu高的前 50 个 SQL 语句 SELECT total_cpu_time,[total_physical_Reads], tot ...
- 【SQL Server】SQL Server占用CPU使用率100%的解决方法
原文:[SQL Server]SQL Server占用CPU使用率100%的解决方法 近日,帮一个客户解决了服务器CPU占用率高达100%的问题. 以前做的一个某污水处理厂自控系统项目,客户反映其自控 ...
- 理解SQL Server的查询内存授予(译)
此文描述查询内存授予(query memory grant)在SQL Server上是如何工作的,适用于SQL 2005 到2008. 查询内存授予(下文缩写为QMG)是用于存储当数据进行排序和连接时 ...
- [转]如何将SQL Server表驻留内存和检测
注意这个功能在SQL2005后已经废弃,因为SQL2005会自动管理哪些表常驻内存. 将SQL Server数据表驻留内存是SQL Server提供的一项功能,在一般小型系统的开发过程中估计很少会涉及 ...
- sql server 是否存在内存表?
最近开发有个需求,需要使用到函数,但是函数中需要使用case when 判断分支,其实可以放到一张表中读取分支:但是物理表需要I/O开销,几十W的数据,线上开销也是很大的,所以就想sql server ...
随机推荐
- Android IntentService使用
因为多数启动服务不必同时处理多个请求(在多线程情景下会很危险),所以使用IntentService类实现服务是很好的选择.本经验将通过继承IntentService输出当前时间教大家如何使用Inten ...
- js中的FileSystemObject使用(FSO)
Set fso = Server.CreateObject("Scripting.FileSystemObject") 定义FSO对象 fso.CreateFolder(Serve ...
- SQL Server调优系列进阶篇 - 深入剖析统计信息
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- DOS批处理命令-@命令
@命令是一个禁止当前语句回显的简单命令. 语法: @[command].[command]是要屏蔽的批处理命令 例如执行包含以下内容的bat文件 echo on @echo ------- @echo ...
- 再探Linux动态链接 -- 关于动态库的基础知识
在近一段时间里,由于多次参与相关专业软件Linux运行环境建设,深感有必要将这些知识理一理,供往后参考. 编译时和运行时 纵观程序编译整个过程,细分可分为编译(Compiling,指的是语言到平台 ...
- .Net规则引擎Biztalk,Workflow和CKRule的比较
微软的规则引擎 很多朋友会问,.Net平台有没有规则引擎?像Java就有很多的规则引擎,Drools,ILog都做得非常好,但.Net好像还没有哦.很多知道规则引擎,但不知道.Net的朋友都烦这个 ...
- javascript form验证、完善 第24节
<html> <head> <title>Form对象</title> <style type="text/css"> ...
- I Take It All Back: Using Windows Installer (MSI) Rollback Actions
Original Link: http://blogs.flexerasoftware.com/installtalk/2011/10/i-take-it-all-back-using-windows ...
- elementary os进入GUI桌面环境失败
问题描述:电脑上安装了elementary os,重启后系统很顺利的到达了Login图形界面,在选定用户并键入正确的密码后,电脑黑屏了一至两秒钟后又回到的Login界面,一开始以为是密码输入错误了,就 ...
- jquery 动态添加下拉框 需要增加 煊染 selectmenu("refresh");
若通过js动态选择下拉框的值必须刷新下拉框,例如:var selArray = $("select#sel");selArray[0].selectedIndex = 1;selA ...