gpt4 book ai didi

sql-server - 如何释放空闲SQL Server数据库使用的内存?

转载 作者:行者123 更新时间:2023-12-02 07:10:37 24 4
gpt4 key购买 nike

我们有一个包含数百个数据库的 SQL Server。该服务器上的许多数据库每周仅使用几次。我们遇到一个问题,即 SQL Server 有时变得非常慢。当发生这种情况时,内存使用率显示为 99%,并且会发生分页。为了解决这个问题,我们计划每晚重新启动 SQL 服务以卸载所有这些数据库并释放内存。

在不关闭 SQL 服务的情况下释放空闲数据库使用的内存的正确方法是什么?我们希望自动卸载过去 30 分钟内未访问的任何数据库。

注意:我正在寻找适用于 SQL 2005 的解决方案。但是,如果 SQL 2008 中有一项功能可以做到这一点,我想了解一下。

最佳答案

SQL Server 将自动释放所有可以释放的内存并避免分页。如果遇到分页,则 99% 的内存正在使用中,无法释放。您需要调查内存是如何使用的,很可能是外部组件,例如 sp_oa_xxx 创建的对象或分布式查询。首先调查内存消费者,看看 sys.dm_os_memory_clerks 并继续阅读How to use the DBCC MEMORYSTATUS command to monitor memory usage on SQL Server 2005 .

顺便说一句,您已经有办法自动关闭未使用的数据库: alter database <dbname> set auto_close on :

AUTO_CLOSE: When set to ON, the database is shut down cleanly and its resources are freed after the last user exits. The database automatically reopens when a user tries to use the database again.

如果您托管数百个很少使用的数据库,那么 AUTO_CLOSE 正是您所需要的。

关于sql-server - 如何释放空闲SQL Server数据库使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5795033/

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