SqlServer系统内存管理在没有配置内存最大值,很多时候我们会发现运行SqlServer的系统内存往往居高不下。这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系统峰值时(预留内存根据系统默认预留使用为准,至少4M),才会清除一些缓存释放少量的内存为新的缓存腾出空间。
这些内存一般都是SqlServer运行时候用作缓存的,例如你运行一个select语句,执行个存储过程,调用函数;
1.数据缓存:执行个查询语句,SqlServer会将相关的数据页(SqlServer操作的数据都是以页为单位的)加载到内存中来,下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。
2.执行命令缓存:在执行存储过程,自定函数时,SqlServer需要先二进制编译再运行,编译后的结果也会缓存起来,再次调用时就无需再次编译。
在我们执行完相应的查询语句,或存储过程,如果我们不在需要这些缓存,我可以将它清除,DBCC管理命令缓存清除如下:
--清除存储过程缓存
DBCCFREEPROCCACHE
--注:方便记住关键字FREEPROCCACHE可以拆解成FREE(割舍,清除)PROC(存储过程关键字简写),CACHE(缓存)
--清除会话缓存
DBCCFREESESSIONCACHE
--注:FREE(割舍,清除)SESSION(会话)CACHE(缓存)
--清除系统缓存
DBCCFREESYSTEMCACHE('All')
--注:FREESYSTEMCACHE
--清除所有缓存
DBCCDROPCLEANBUFFERS
--注:DROPCLEANBUFFERS
Ⅱ sql占用内存瞬间爆满
在SQL2008会把整个数据库缓存到内存里面,就是说你数据库有多大,就会占内存多个空间,直到把内存占满,你可以限制SQL 内存
首先我们需要登录 sql server 2005的资源管理器
鼠标右击我们sql server 2005的服务器,然后选择“属性”选项
找到指定数据库服务器的属性中的“内存”属性,并点击
接下来就是配置数据库内存了
http://jingyan..com/article/fedf07377c353f35ac8977f8.html
Ⅲ 为什么读取SQL的数据库会占用内存那么大
因为SQL使用了缓存技术,所以在使用一段时间以后内存占用会越来越多。
打开企业管理器,在你的SQL服务器上点右键,查看属性。
在“内存”项中把内存的“最大值”改小一点,不要超过你的内存的一半,或者选中“使用固定的内存大小”,然后将值设定为你内存的一半也可以。
Ⅳ sql server 2008 r2 启动时将主机cpu、内存资源全部占满了,这正常吗
正常,sql 需要大内存和cpu来计算的,如果感觉有卡的话,建议增加内存。
Ⅳ SQL Server占用内存过高,什么原因导致的,用什么方法可以解决
经常使用MSSQL的朋友都会发现一个小小的网站在运行若干天后MSSQL就会把服务器上所有的内存都吃光,此时你不得不重新启动一下服务器或mssql来释放内存,有人认为是 MSSQL有内存泄露问题,其实不然,微软给我们了明确说明:在您启动SQL Server 之后,SQL Server内存使用量将会持续稳定上升,即使当服务器上活动很少时也不会下降。另外,任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降,直到可用内存降到 4 至 10 MB 为止。
仅仅出现这种状态不表示内存泄漏。此行为是正常的,并且是 SQL Server 缓冲池的预期行为。
默认情况下,SQL Server 根据操作系统报告的物理内存加载动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止内存页面交换(在 4 至 10 MB 之间),SQL Server缓冲池就会继续增大。像在与SQL Server 分配内存位于相同计算机上的其他进程一样,SQL Server 缓冲区管理器将在需要的时候释放内存。SQL Server每秒可以释放和获取几兆字节的内存,从而使它可以快速适应内存分配变化。
更多信息
您可以通过服务器内存最小值和服务器内存最大值配置选项设置 SQL Server数据库引擎使用的内存(缓冲池)量的上下限。在设置服务器内存最小值和服务器内存最大值选项之前,请查阅以下 Microsoft 知识库文章中标题为'内存'一节中的参考信息:319942 HOW TO:Determine Proper sql server(WINDOWS平台上强大的数据库平台) Configuration Settings(确定正确的 sql server(WINDOWS平台上强大的数据库平台) 配置设置)
请注意,服务器内存最大值选项只限制 SQL Server 缓冲池的大小。服务器内存最大值选项不限制剩余的未保留内存区域,sql server(WINDOWS平台上强大的数据库平台) 准备将该区域分配给其他组件,例如扩展存储过程、COM 对象、以及非共享 DLL、EXE 和 MAPI 组件。由于前面的分配SQL Server专用字节超过服务器内存最大值配置是很正常的。有关此未保留内存区域中分配的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:316749 PRB:在使用大量数据库时可能没有足够的虚拟内存
下面我们就来实战如何限制MSSQL内存使用:
第一步:打开企业管理器双击进入要修改的MSSQL.
第二步:在左侧MSSQL上点击右键,选择属性,弹出SQL Server属性(配置)对话框(最好打上SQL SP4补丁)
第三步:点击内存选项卡. 在这里,你会看到MSSQL默认设置为使用最大内存,也就是你所有的内存,根据你的需要,设置它的最大值(一般为物理内存-128M)和最小值(一般为最大内存的1/4)吧.
第五步:设置完毕,重启MSSQL服务,配置即可生效!
Ⅵ SQL占用服务器内存太多求助!
1. 60个DB本身不是瓶颈; 如果某些数据库平时用不上也可以将它们分离出来, 即便不分离, 若长期没有操作也不会占用服务器内存资源和CPU资源
2. 32G内存占满不是太大的问题. SQL将数据尽可能地加载到内存中可以加快查询的速度, 若想限制SQL的内存占用量, 要在SQLServer上进行配置,限定内存使用上限
3. 要改善查询速度慢可能还得从应用方面入手
Ⅶ sql server 在占用服务器内存居高不下怎么办
可以进SQL Server Management Studio后自个设定,参看下图:
********相关知识********
一、如果是普通的工作用台式电脑:
1、安装了个SQL Server做测试、开发、单机数据支持。SQL Server相对别的软件来说,对系统占用大是正常的。
2、解决方法是去控制面版中,去“管理工具”-》“服务”中,将所有的SQL Server服务设为手动启动,并停用,要用它们的时候再去手动启动它们。
3、也可以用SQL Server的管理工具(SQL Server Management Studio)设定内存使用量到适合的大小。
二、如果是生产用服务器:
1、SQL Server上如果有大型的生产用数据库,对内存的占用大那是非常正常的。(比如我提供的图片中,我实际生产用的服务器的内存的硬件配置为64G,给SQL Server用48个G。这算不算巨大呢?其实很正常的。)
2、服务器,它本来的功能就是以最快的速度,最高的效率去为前台应用提供后台支持,它安装内存的目的就是为了让SQL Server等后台数据支持系统使用的。不用,安装那么多的内存干嘛呢?这东西又不能用来显摆。
3、如果SQL Server的内存占用过大,已影响到了别的应用的正常运行,那么,需要进行调整,打开 SQL Server Management Studio,联接上SQL Server,对 根节点 点右键,点“属性”,点“内存”,去设定它的最大的内存占用。注意,内存设得过小会影响SQL Server的工作速度。当然,设得过大,超过了SQL Server的需求,那也提升不了效率,会浪费硬件的资源。
三、异常的内存占用巨大:
如果是生产用的SQL Server,对内存占用出现异常的巨量,那需要对SQL Server及对生产系统非常了解的工程师对运行情况进行监控、分析,找出原因,针对性的修正代码。
Ⅷ sql数据库占用内存太大如何处理
sql server没有办法释放内存,内存都是系统自动管理的
除非你杀调哪些占用内存大的进程
sql 语句没写好,死锁...都会导致占用内存很大
select * from master..sysprocesses
kill spid --spid 就是上面查到的spid字段