如何平衡 SQL Server 内存与 SQL Server Analysis Services 内存

Pre*_*gha 11 sql-server ssas memory

我们有许多具有相同配置的系统

  • 一台服务器(虚拟或物理)
  • 运行 SQL Server (SQL) 和 SQL Server Analysis Server (AS)
  • 多核
  • 16GB 内存

每天晚上 SQL Server 会做大约 2-3 小时的处理,然后是 2-3 小时的 AS 处理。然后全天只查询 AS。

假设这是一个专用服务器,没有其他应用程序值得关注,并且两组处理是完全同步的 - 没有重叠总是一个接一个 - 我怎样才能最好地设置 SQL 和 AS 服务器内存限制。

询问的原因是,如果我不为 SQL 设置限制,它将抢占它所能获取的所有内存。但是 - 我的理解是,如果出现以下情况,SQL 将很乐意放弃此内存:

  • 它没有使用它并且

  • 另一个服务/程序请求它。

所以从逻辑的角度来看,我相信允许 SQL 根据需要使用尽可能多的东西,但我不太确定 AS' TotalMemoryLimit。我不确定 AS 是否会放弃它的记忆。事实上,阅读更多让我相信让它承担一切是错误的。

这是否意味着我实际上需要为两者设置限制?我对最佳实践应该是什么以及考虑到流程不重叠我们需要衡量什么感到困惑。

希望这是有道理的。

Aar*_*and 9

我认为通过安排一个计划任务或服务来强制两个服务的手是可行的:

(a) 在 SQL Server 的夜间处理之前,关闭 SSAS 服务,并增加分配给 SQL Server 的内存

(b) 在 SQL Server 完成处理后,减少最大服务器内存并重新启动 SQL Server

(c) 启动 SSAS

这假定在 SQL Server 处理时 SSAS 不需要联机。否则将 (a) 从“关闭”更改为“重新启动”……只要 SSAS 在 SQL Server 处理时没有主动执行任何操作,就不必担心它会窃取内存。

这还假设您希望每个服务重叠内存消耗,并在不同时间使用相同的内存 - 我确信有关联/NUMA 等方法可以完全隔离它们的操作空间,或者在最坏的情况下,托管他们在不同的机器上。


Ste*_*ven 7

SQL 和 SSAS 是否需要同时运行?如果没有,你是 100% 确定吗?

我会考虑为 SQL 和 SSAS 设置内存设置,看看它们是否可以相互协作。

我们需要为操作系统、其他进程和多页分配留出一些内存。也许4G?

尝试这样的事情......

SQL端设置Max Server Memory为12G,Min Server Memory为6G。

在 SSAS 端,将 TotalMemoryLimit 设置为 12G,将 LowMemoryLimit 设置为 6G。

此外,不要启用锁定内存中的页面。

尝试几次迭代,向上或向下调整这些数字。

如果这不起作用,并且您知道 SQL 和 SSAS 不需要同时运行的事实,那么我会尝试 Aaron 的建议,即安排作业以关闭和打开服务。