zoukankan      html  css  js  c++  java
  • ms sql server缓存清除与内存释放

    ms sql server缓存清除与内存释放

     

    Sql Server系统内存管理在没有配置内存最大值很多时候我们会发现运行Sql Server的系统内存往往居高不下这是由于他对于内存使用的策略是有多少闲置的内存就占用多少直到内存使用虑达到系统峰值时预留内存根据系统默认预留使用为准至少4M),才会清除一些缓存释放少量的内存为新的缓存腾出空间

    这些内存一般都是Sql Server运行时候用作缓存的例如你运行一个select语句执行个存储过程调用函数

    1. 数据缓存执行个查询语句Sql Server会将相关的数据页Sql Server操作的数据都是以页为单位的加载到内存中来下一次如果再次请求此页的数据的时候就无需读取磁盘了大大提高了速度

    2.执行命令缓存在执行存储过程自定函数时Sql Server需要先二进制编译再运行编译后的结果也会缓存起来再次调用时就无需再次编译

    在我们执行完相应的查询语句或存储过程如果我们不在需要这些缓存我可以将它清除DBCC管理命令缓存清除如下

     

      --清除存储过程缓存  

    DBCC FREEPROCCACHE      

    --注:方便记住关键字 FREEPROCCACHE 可以拆解成 FREE(割舍,清除) PROC(存储过程关键字简写),CACHE(缓存) 

     

    --清除会话缓存 

     DBCC FREESESSIONCACHE  

    --注: FREE(割舍,清除) SESSION(会话)  CACHE(缓存)  

     

    --清除系统缓存 

     DBCC FREESYSTEMCACHE('All'

    --注:FREE SYSTE MCACHE 

     

    --清除所有缓存 

     DBCC DROPCLEANBUFFERS 

    --注: DROP CLEAN BUFFERS 

    虽然我们已经清除了缓存但是sql并未释放相应占用的内存它只是腾出新的空间为之后所执行脚本所用Sql Server  并没有提供任何命令允许我们释放不用到的内存因此我们只能通过动态调整 Sql Server可用的物理内存设置来强迫它释放内存

    操作原理是调整内存配置大小手动操作方法:

    1.打开Sql Server Management(企业管理器);

    2.打开Sql Server实例的属性面板;

    3.找到内存设置改变其中的最大服务器内存使用即可

    使用脚本操作

     

    --强制释放内存 

    CREATE procedure [dbo].ClearMemory   

    as  

    begin 

    --清除所有缓存 

    DBCC DROPCLEANBUFFERS 

    --打开高级配置 

    exec sp_configure'show advanced options', 1 

    --设置最大内存值,清除现有缓存空间 

    exec sp_configure'max server memory', 256 

    EXEC ('RECONFIGURE'

    --设置等待时间 

    WAITFOR DELAY '00:00:01' 

    --重新设置最大内存值 

    EXEC  sp_configure'max server memory',4096 

    EXEC ('RECONFIGURE'

    --关闭高级配置 

    exec sp_configure'show advanced options',0 

    GO 

    下面提供内存查看功能的一些脚本语句

     

      --内存使用情况      

          

    SELECT * FROM sys.dm_os_performance_counters  

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

     

    -- 内存状态  

    DBCC MemoryStatus  

     

    --查看最小最大内存  

    SELECT configuration_idas id,name as 名称,minimum as配置最小值, maximumas 最大值,  

    is_dynamic as 是否动态值, is_advanced as 是否优先, value_in_use AS 运行值,  

    description as 描述 FROM sys.configurations 

  • 相关阅读:
    保持唯一性,请停止使用【python3 内置hash() 函数】
    彻底解决go get golang.org/x等包失败与VSCode golang插件安装失败问题
    Linux 任务后台运行软件【即:终端复用器】之---screen
    Ubuntu+uWSGI部署基于Django的API【鸿篇巨制,事无巨细】
    python慎用os.getcwd() ,除非你知道【文件路径与当前工作路径的区别】
    win下youtube-dl 【ERROR: requested format not available】选下载视频质量的坑--【值得一看】
    Mysql失败,异常pymysql.err.InternalError: (1366, "Incorrect string value: '\xF0\x9D\x90\xBF;......
    scrapy post payload的坑及相关知识的补充【POST传参方式的说明及scrapy和requests实现】
    mitmproxy--Cannot establish TLS with client (sni: e.crashlytics.com): TlsException("(-1, 'Unexpected EOF')",) 解决办法
    【GET TIPS】Chrome所见即所得的截图技巧
  • 原文地址:https://www.cnblogs.com/firstdream/p/8807127.html
Copyright © 2011-2022 走看看