在我的开发机器上,我的 SQL Server 配置了很高的最大内存量(8GB 的 16GB)。这是许多开发任务所必需的。
不过,有时我想找回我的记忆。我不想永久消耗 8GB。
让 SQL Server 突然将所有内存释放给操作系统的好方法是什么?
DBCC DROPCLEANBUFFERS
不这样做。它只是将干净的缓冲区标记为可用。
重新启动 SQL Server 是一个问题,因为由于此错误/功能,这会导致运行 1 分钟的数据库恢复:停止 SQL Server 服务会导致数据库无法完全关闭(请为该连接项投票;似乎是一个严重的错误) .
Pau*_*ite 16
我经常增加和减少笔记本电脑上运行的 SQL Server 2005-2016 实例的最大服务器内存配置选项(启用内存中的锁定页面)。从来没有给我带来任何问题,而且内存似乎总是很快被释放。我还会在发现需要时停止、启动和重新启动实例(使用 SQL Server 配置管理器,我一直保持打开状态)。
就检查点而言,您如何配置取决于 version。具有持续时间目标的手动检查点自 2005 年以来一直可用(尽管不可否认,它在以后的版本中更有效)。
<duration>
在关闭之前为每个数据库运行手动检查点将有助于分散 I/O 负载并减少启动时的恢复时间。托管检查点还将减少请求内存收缩时所需的 I/O,因为写入持久存储的脏页将更少。在减少我注意到的最大内存设置之前删除干净的缓冲区没有特别的好处。
不使用 'lock pages in memory' 可能会增加 SQL Server 释放内存的速度,但我依靠它来避免将 SQL Server 内存分页到磁盘。如果您不需要它用于此目的,您可以选择不使用它运行。
不过,有时我想找回我的记忆。我不想永久消耗 8GB。
让 SQL Server 突然将所有内存释放给操作系统的好方法是什么?
DBCC DROPCLEANBUFFERS 不会这样做。它只是将干净的缓冲区标记为可用。
由于您说要在DEV 机器上释放内存,因此您可以使用以下查询
DBCC FREESYSTEMCACHE ('ALL')
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
Run Code Online (Sandbox Code Playgroud)
但请注意上述命令won't cause SQL Server process to release memory committed it would just clear caches
。这就是你正在经历的。
运行上述查询后,您可以将 SQL Server 最大服务器内存更改为较低值(在您的情况下可能是 4-5G)这将强制 SQL Server 进程释放内存,从而再次降低内存消耗我建议这是图片中的机器开发机。更改最大服务器内存不需要重新启动。另一件事是重新启动 SQL Server 服务,这肯定会清除 SQL Server 进程持有的缓存和内存。但是在您重新启动 SQL Server 后,它可能会在一段时间后收回所有内存。
归档时间: |
|
查看次数: |
48563 次 |
最近记录: |