zoukankan      html  css  js  c++  java
  • sqlserver内存释放心得

    SQL Server 2008 或者R2的默认内存分配是2147483647MB, 差不多算是无穷大,对于系统内存的管理策略是有多少占多少。SQLserver会把所有处理过的SQL操作缓存在内存里,这样就不用总去读硬盘了。但是如果长时间运行SQL Server, 系统内存被用的差不多,再开启其他程序就有可能会报内存不足。这时候就需要释放内存缓存啦。一般我用以下两种办法:

    1. 很简单,打开SQL Server configuration Manager,然后把SQL Server(MSSQLSERVER)重启一下,一般默认的instance 就是MSSQLServer,当然你如果装了其他的instance(实例)就选择相应的,例如MSSQLServer(SQLServLatin1), MSSQLServer(ARABIC)。

    这种方法最简单有效,但是只能临时的清除SQLServer缓存所占的内存空间,时间长了SQLServer还会把内存占满。而且很重要的是这种方法不能在SQLserver有连接的情况下使用,那样会让正在使用SQLServer的用户暂时无法连接SQLServer,甚至导致程序处错误。而你作为管理员就……

    1. 第二种方法比较复杂,我也不是SQLServer高手,只是从网上学习得来的一些query:

    DBCC FREEPROCCACHE

    DBCC FREESESSIONCACHE

    DBCC FREESYSTEMCACHE('All')

    DBCC DROPCLEANBUFFERS

    以上一段一般能释放缓存,(注意引号有的时候因为word文档里打不出英文的引号,最好拷到记事本里编辑一下)但是有的时候不是很管用。因为SQLserver不会因为Cache(缓存)释放了而释放内存,占了茅坑不一定XX。此命令只会让SQLServer不会继续占领新的内存,定期执行一下还可以。关键是还要释放一下内存。

    通过以下Query 可以看出当前服务器所占内存情况

    SELECT * FROM sys.dm_os_performance_counters

    WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')

    Target Server Memory(KB)和 Total Server Memory(KB)字面意思所得就是目标和当前SQL Server所占的内存大小。

    EXEC sp_configure 'show advanced options', 1

    GO

    EXEC sp_configure 'max server memory', 256

    EXEC ('RECONFIGURE' )

    WAITFOR DELAY '00:00:05'

    EXEC  sp_configure 'max server memory', 2147483647

    EXEC ('RECONFIGURE' )

    GO

    EXEC sp_configure 'show advanced options', 0

    GO

    其实我用这几句也不是很奏效,时间一长还是可能会有内存不够的情况。

     

    ******

    总的来说我的管理办法是:

    1. 装好了SQLServer之后立刻设置最大使用内存

     

    EXEC sp_configure 'show advanced options', 1 -- 这句是打开advanced options

    GO

    EXEC sp_configure 'max server memory', 9216 -- 设置最大内存为9G,我们server 内存是16G的,留下7G足够了

    EXEC ('RECONFIGURE' )

    GO

    EXEC sp_configure 'show advanced options', 0 --记得用完了把advanced options关掉

    GO

    1. 过一段时间觉得不行了就执行一下

    DBCC FREEPROCCACHE

    DBCC FREESESSIONCACHE

    DBCC FREESYSTEMCACHE('All')

    DBCC DROPCLEANBUFFERS

    这个清缓存也很头疼,不知道什么时候合适,就这样吧,管他呢,我又不是专家,出了问题大不了来机器不行。或者写个Procedure,用job定期执行。

    没办法,SQLServer太霸道了,以上方法不是万全之策,建议还是把SQLServer放到一边单独用吧。

     

  • 相关阅读:
    js模拟点击加载事件代码
    js添加节点
    js数字随机产生并相加
    转:Selenium借助AutoIt识别上传(下载)详解
    [原创] web_custom_request 与 Viewstate
    转:浏览器与WEB服务器工作过程举例
    转:WebDriver(Selenium2) 处理可能存在的JS弹出框
    转:Loadrunner报错“Too many local variablesAction.c”解决方法
    转:loadrunner关联及web_reg_save_param方法浅析
    转:性能测试流程剖析
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/4505658.html
Copyright © 2011-2022 走看看