【问题标题】:SQL Server 2008R2 super high memory consumption - many stolen pages and huge log fileSQL Server 2008R2 超高内存消耗——大量被盗页面和巨大的日志文件
【发布时间】:2020-09-15 17:39:22
【问题描述】:

我们有一个 SQL Server 2008 R2 实例在 Windows Server 2008 R2 机器上运行。 SQL 实例分配有 12 GB RAM。目前(可能是通常情况下)我们有 47 个并发连接。服务器上有一些数据库,但只有一个真正被使用。此数据库为 33 GB,日志大小为 89 GB。

服务器物理内存稳定在 98%,我们的应用程序响应时间很差。 SQL Server 使用的大部分内存都是被盗页。我不知道如何纠正这个。我们的索引和统计数据基本上都是全新的/最近重建的。

对于被盗页面是如何发生的、为什么它们仍然如此之高以及如何处理这个问题,我有点不知所措。日志有关系吗?它几乎是数据库大小的 3 倍。我们正在达到一个临界点,因此我们将不胜感激任何和所有的帮助。谢谢!

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    默认情况下,SQL Server 将占用所有内存,除非您在 SSMS 中的服务器属性中告诉它不要(右键单击服务器并选择属性,转到左侧的内存并设置最大值)。

    对于日志文件的大小,应用程序的日志记录方式很重要。右键单击数据库并选择选项,查看恢复模式。我会用谷歌搜索不同的类型以将类型与您的数据库需求相匹配。如果它是完整记录并且您没有进行事务日志备份,则日志将不断增长。在这种情况下,请查看实施 Ole Hallengren 广泛使用的备份脚本:https://ola.hallengren.com/

    【讨论】:

    • 是的,实际上这似乎正是正在发生的事情!谢谢。事实证明,日志文件增长了这么多,因为它处于完全恢复模式,并且对数据库进行了索引/统计维护(例如:大量记录)。数据库也没有备份(只是它所在的整个虚拟机),所以日志一直在增长。现在正在纠正中。但是,这仍然给我留下了巨大的 RAM 问题和被盗页面。我相信这是在日志增长之前发生的。你对此有什么线索吗?
    • @scarr030 抱歉耽搁了!内存问题,请参考答案的顶部。 SQL Server 将占用服务器的所有内存,除非您指定不这样做。您需要以 MB 为单位指定允许操作系统使用大约 6-8GB 的​​内存量。获取整体服务器 RAM,减去 8 GB,通过 SSMS 将其放入 SQL Server 的最大内存中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多