首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server不返回内存--停留在最大服务器内存设置中

Server不返回内存--停留在最大服务器内存设置中
EN

Database Administration用户
提问于 2013-06-13 11:33:38
回答 1查看 2.2K关注 0票数 7

我是唯一一个在这个服务器上工作的人,当我看到SQL正在使用服务器的所有可用内存时,我遵循关于优化SQL内存使用的文档。

我所做的步骤之一是将最大内存大小固定为20 Gb (用于测试的服务器有32 Gb内存)。

调优之后,昨天,Server只使用3-4 Gb,但今天,它又达到了我分配的最大内存使用量。

为什么Server要保留所有的20 Gb?如果已经使用了最大内存大小,那么当用户开始使用服务器时会发生什么?

EN

回答 1

Database Administration用户

发布于 2013-06-13 17:21:59

它保存着那个内存,因为你曾经使用过它,很明显,你可能会再次使用它。这就是Server的工作方式:它将占用所需的内存(最多可达到允许的最大值),并且只有在操作系统需要时才会将它还给操作系统。如果您不要求从Server返回内存,为什么要它放弃它呢?分配和释放内存效率很低,Server的设计并不是为了让内存返回以便让它处于空闲状态。出于类似的原因,在删除或重新组织数据之后,它不会自动为您缩小文件: grow /收缩操作是昂贵的,如果该文件明天将再次增长.

如果在笔记本电脑上运行SQL Server,需要内存执行其他任务,则应考虑设置较低的最大服务器内存设置。这样,Server就不会侵占您认为需要的内存。

如果您在服务器上运行SQL server,那么它是该框中唯一的内容。如果服务器承载需要内存的其他应用程序等,则可以进一步减少最大服务器内存,或者将这些应用程序移动到另一台服务器。如果没有其他应用程序需要内存,那么为什么您关心它是使用20 GB、16 GB、12 GB还是100 MB呢?您是否打算暂时将剩余的内存出租给其他服务器,直到Server再次需要它为止?你没有给它20 GB的内存,所以它将使用20 GB的内存吗?

您绝对没有理由担心SQL Server正在使用您告诉它可以使用的内存量。这正是它应该工作的方式。当用户对服务器运行查询时,他们可能会访问内存中的数据( server内存分配的很大一部分是缓冲池)。如果您的数据库比20 GB大得多,那么您可以考虑实际提高最大服务器内存设置,以便最大限度地利用内存,以及I/O来自内存的数量,而不是磁盘(这要慢得多)。人为地降低最大服务器内存,因为您认为Windows需要12 GB内存才能操作,这就像分页到磁盘--您正在通过可以在更快内存中执行的缓慢磁盘子系统强制执行更多的I/O。

同样,如果服务器上没有其他任何东西正在运行,您就没有理由需要超过3或4 GB的操作系统,而将其他一切留给SQL server处理。而且,如果您已经将Server的最大内存设置为28 GB,并且即使在所有用户都已经回家之后,它仍然“使用”28 GB,您就不应该担心了。这只是意味着,在早上,它将不需要任何工作,以获得高达28 GB。

票数 17
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/44475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档