gpt4 book ai didi

sql - 执行查询后,SQL Server不释放内存

转载 作者:行者123 更新时间:2023-12-03 08:49:08 27 4
gpt4 key购买 nike

我想我在这里有一个基本的问题,很多人可能已经遇到过。当我在SQL Server中运行查询时,它将在内存中加载查询执行所需的所有数据(例如,如果存在联接,它将从这两个表中加载必要的数据),但是当查询完成执行内存时不释放SQL Server使用的资源。

我注意到了这一点,因为几天前我正在分析一个占用大量tempdb空间的查询。当我用来运行查询时,它将(在执行结束时)消耗多达25 GB的RAM。除非我重新启动MSSQLSERVER服务,否则不会释放这25 GB的RAM。

你们如何进行SQL Server内存管理?这显然是一个问题吧?

我还想听听您是否进行了一些特定的操作来清除单个查询所用的内存。

提前致谢!

最佳答案

实际上,SQL Server设计为请求尽可能多的RAM,除非操作系统明确要求此内存,否则不会释放该RAM。我认为最好的方法是限制服务器可以使用的RAM数量,这将使OS拥有一定数量的资源以使用no-matter-what。设置这个How to configure memory options using SQL Server Management Studio:

Use the two server memory options, min server memory and max server memory, to reconfigure the amount of memory (in megabytes) managed by the SQL Server Memory Manager for an instance of SQL Server.

  1. In Object Explorer, right-click a server and select Properties.
  2. Click the Memory node.
  3. Under Server Memory Options, enter the amount that you want for Minimum server memory and Maximum server memory.


您也可以使用以下命令(示例)在T-SQL中执行此操作:
exec sp_configure 'max server memory', 1024
reconfigure

将消耗限制为1GB。

注意:以上内容并不会将SQL Server的所有方面限制为该内存量。这仅控制缓冲池和执行计划缓存。此设置不控制诸如CLR,全文本,SQL Server .exe文件使用的实际内存,SQL Agent,扩展存储过程等。但是,这些其他事情通常不需要那么多的内存,缓冲池和执行计划缓存需要大量的内存。

我希望这有帮助。

关于sql - 执行查询后,SQL Server不释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17291047/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com