zoukankan      html  css  js  c++  java
  • Sqlserver内存管理:限制最大占用内存

    一、Sqlserver对系统内存的管理原则是:按需分配,且贪婪(用完不还)。它不会自动释放内存,因此执行结果集大的sql语句时,数据取出后,会一直占用内存,直到占满机器内存(并不会撑满,还是有个最大限制,比机器内存稍小),在重启服务前,sqlserver不会释放该内存,也没有任何办法可人为释放。以下命令虽然可释放缓存,但sqlserver并不会因此释放已占用的内存。

    DBCC FREEPROCCACHE #清除存储过程相关的缓存
    DBCC FREESESSIONCACHE #清除会话缓存
    DBCC FREESYSTEMCACHE('All') #清除系统缓存
    DBCC DROPCLEANBUFFERS #清除所有缓存
    二、唯一的办法是:人为修改最大可占用物理内存进行限制。

    三、修改办法如下:

    管理员用户登录数据库客户端(Microsoft SQL Server Management Studio),在实例名(树形菜单根节点,显示登录名那栏)上右键,选择属性-->内存,设置“最大服务器内存”,单位为MB,可根据实际内存调整。

    四、如此调整后,机器内存便不会被sqlserver耗尽了。

     

    扩展:(转自网络)

    由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存。所以很多时候,我们会发现运行Sql Server的系统内存往往居高不下。这些内存一般都是Sql Server运行时候用作缓存的,例如你运行一个select语句,那么Sql Server会将相关的数据页(Sql Server操作的数据都是以页为单位的)加载到内存中来,下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。这类的缓存叫做数据缓存。还有一些其他类型的缓存,如执行存储过程时,Sql Server需要先编译再运行,编译后的结果也会缓存起来,下一次就无需再次编译了。

    点赞 1
    ————————————————
    版权声明:本文为CSDN博主「东东不邪」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/donghustone/java/article/details/83338185

  • 相关阅读:
    Go的Web之旅【部署】
    module declares its path as: github.com/xxx/yyy【Go报错】
    android studio快捷键集合
    Web App 概述
    WIN10 kafka搭建完后命令测试步骤自用
    Echarts tab 切换解决图不能显示的问题
    如何为不定高度(height:auto)的元素添加CSS3 transition-property:height 动画
    手持设备开发项目实例
    SQL Server 查找表问题
    Tomcat 10 升级注意事项
  • 原文地址:https://www.cnblogs.com/xinzhyu/p/12768581.html
Copyright © 2011-2022 走看看