【问题标题】:SQL Memory usageSQL 内存使用情况
【发布时间】:2009-06-29 15:15:45
【问题描述】:

我正在管理一个同时运行 IIS 和 SQL 08 express 的 winserver08 机器。我只是碰巧看了一眼任务管理器的性能选项卡,发现“内存使用历史记录图接近最高,读数为 1.8 gig(我有 2 gig 物理内存)。 Processes 显示 sqlserver 以 940,000K 的速度运行 - 迄今为止最大的消费者。

我是一个低容量站点 - cpu 利用率几乎没有记录。服务器根本没有任何稳定性问题。这只是 SQL 处理可用内存的方式还是我应该深入挖掘?

谢谢

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2012


    【解决方案1】:

    SQL Server 管理它自己的内存池。它将在内存压力下将内存释放回操作系统。

    所以,是的,这是正常行为,无需担心。

    注意:我应该提到一个例外:如果 TSQL 脚本使用 sp_OACreate 来创建 COM 对象,而不是使用相应的 sp_OSDestroy 释放对象(例如,发生错误并且脚本过早终止),然后内存可能会泄漏。这些存储过程的使用并不常见(许多 DBA 不允许打开此功能,这是有充分理由的)我相信对于未释放的 CURSORS 也是如此。

    【讨论】:

      【解决方案2】:

      除非您已配置,否则这是正常行为。阅读this article,清楚了解内存配置和建议。

      在你的情况下,我假设你有默认设置,你看到的是正常的,没有理由担心。

      拉吉

      【讨论】:

        【解决方案3】:

        请注意,与任何标准版本(即任何非 Express 版本)相比,SqlExpress 可能以不同的方式管理内存。 我无法提供具体的链接,但从个人经验来看,当您迁移到 SQLServer 的正确分布(速度、内存管理、极端条件下的响应能力等)时,情况会发生很大变化。

        如果有人知道更多,请整合我的答案。

        【讨论】:

          【解决方案4】:

          如果没有设置上限,SQL Server 将使用机器内存 90% 的区域。这是完全正常的,因为 SQL Server 正在为自己管理内存并会在必要时释放内存。

          如果您担心 SQL Server 可以使用的内存量上限,请转到 sqlexpress 实例的属性,选择内存页面,然后减少最大服务器内存。

          【讨论】:

          • 作为一般规则,您不应该在不知道自己在做什么的情况下限制 SQL 的 RAM。根据原始问题,建议更改上限可能不是最佳答案。在触摸此选项之前购买更多内存 - 特别是考虑到 SQL Express 已经有 1 gig 的限制。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-02-03
          • 2012-05-30
          • 2021-02-26
          • 2010-10-24
          • 2015-06-14
          • 2015-01-06
          • 1970-01-01
          相关资源
          最近更新 更多