如何在SQL Server内存和SQL Server Analysis Services内存之间取得平衡


11

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

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

每天晚上,SQL Server将进行大约2-3个小时的处理,然后进行2-3个小时的AS处理。然后,整天只查询AS。

假设这是一台专用服务器,没有其他应用程序值得关注,并且两组处理是完全同步的-彼此之间始终没有重叠-我该如何最好地设置SQL和AS服务器的内存限制。

问的原因是,如果我不为SQL设置限制,它将获取所有可以使用的内存。但是-我的理解是,在以下情况下,SQL会很乐意放弃该内存:

  • 它没有使用它

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

因此,从逻辑角度来看,我相信允许SQL采取所需的一切,但我对AS'不太确定TotalMemoryLimit。我不确定AS是否会放弃它的内存。实际上,阅读更多使我相信,让一切全部使用是错误的。

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

希望这是有道理的。

Answers:


9

我认为通过安排以下任务或服务来强制两个服务都可行:

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

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

(c)启动SSAS

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

这还假设您希望每个服务重叠使用内存,并在不同时间使用相同的内存-我敢肯定,有一些使用亲和力/ NUMA等方法可以完全隔离其操作空间或在最坏的情况下托管他们在不同的机器上。


我认为也许我们也应该在SASS处理之后重新启动SQL-因为它读取大量数据(数据仓库)。
Preet Sangha

实际考虑一下-重新启动SQL Server不会真正影响所有SQL处理吗?
Preet Sangha

1
@Preet是的,这不是重点吗?
阿龙贝特朗

7

SQL和SSAS是否需要同时运行?如果不是,您是否100%确定?

我将研究为SQL和SSAS设置内存设置,以查看它们是否可以相互配合。

我们需要为OS,其他进程和多页分配保留一些内存。也许是4G?

试试这样的东西...

在SQL端,将“最大服务器内存”设置为12G,将“最小服务器内存”设置为6G。

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

另外,请勿启用“锁定内存中的页面”。

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

如果这行不通,并且您知道SQL和SSAS不需要同时运行,那么我会尝试Aaron关于计划作业以关闭和打开服务的建议。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.