SQL Server 2008 恢复模型和日志大小是否影响 sqlservr.exe 进程的内存使用情况?

SQL Server 2008 恢复模型和日志大小是否影响 sqlservr.exe 进程的内存使用情况?

问题

我们有一个 SQL Server 实例 (2008) 运行我们的软件,我们认为用户数量很少(在任何给定时间大约有 30 个并发连接到服务器)

作为供应商,我们不是 SQL DBA,只能提供解决此类问题的基本技能。大多数客户都有自己的 SQL DBA 来为他们担任此角色,但有时如果客户得不到足够的支持,我们必须介入并提供帮助。

尽管他们确实将该服务器用于 SQL 以外的用途,而且这是一个必须单独处理的问题,但我们最近注意到,该客户端的 sqlservr.exe 进程使用的 RAM 比我们预期的软件多得多。

背景

首先,我要说的是,我理解 SQL 最大服务器内存默认设置基本上是使用服务器的所有可用内存。我们将该值更改为 10GB,因为考虑到服务器的大小和所用软件的比例,我们预计它们在任何给定时间只需要大约 4-6GB。

一些可能与我的问题相关或不相关的信息:

  1. 他们将我们软件的数据库设置为完整恢复模式,并且日志一直在增长,大约 3 年来无需维护。
  2. 当我们重新启动 SQL 服务时,用户将返回软件,在约 24 小时的时间内,他们将使用我们预期的 RAM 量(分配的 10GB 中约 4-6GB)
  3. 我们一直在运行 Perfmon,将一些计数器结果与没有出现此问题的时间段进行比较,但没有注意到日志之间存在任何显著差异
  4. 检查事件查看器是否存在明显的内存问题

结论

我目前唯一的猜测是,这与庞大的日志/恢复模型或与缓存相关的某些 SQL 设置有关。也许这是 SQL 专家希望看到的正常行为,但根据我们在 SQL Server 中运行软件的有限经验,对于这种规模的安装来说,这是不正常的。

因此,总结一下就是一个 TLDR:

SQL Server 2008 恢复模型和日志大小是否会影响 sqlservr.exe 进程的内存使用情况?如果答案是肯定的,那么我所描述的“问题”对于 SQL 来说是否正常,我们之前是否没有遇到过这种情况?如果答案是否定的,您建议调查哪些其他事项来解决我的问题?

答案1

这个数据库有多大?SQL Server 喜欢将整个数据库放在内存中。从您的问题来看,它听起来像是 200 MB MDF 和 250 GB LDF,或者类似的东西。

恢复模型不会进入其中,除非他们严重忽视数据库,而他们显然是这样做的。

  • 将数据库设置为简单恢复。
  • 将日志文件缩小到合理的大小。
  • 将数据库设置为完全恢复。
  • 运行完整备份。
  • 立即地日程常规的完整和事务日志备份。

我个人不会浪费时间考虑其他任何东西,除非您实施基本的数据库维护(尽管我认为 10 GB 对于 SQL Server 来说是一个吝啬的内存分配)。

相关内容