数据仓库服务器。您如何计算 RAM/CPU 规格?

Sir*_*lot 8 data-warehouse sql-server windows-server sql-server-2016

我正在尝试为我们计划的数据仓库升级编写数据仓库服务器的规范。

当我们在 VMWare 主机上运行虚拟服务器时,我们能够根据需要添加或删除资源。过去,我们根据需要逐步添加 RAM 和 CPU。随着我们需求的增加,我们已经游说获得更多资源。(主要是磁盘和 RAM)。

我们要求更多。他们给我们尽可能少。

然而,最近每当我们谈论资源时,我们都会因为没有首先正确指定机器而受到批评,现在我被告知开发主机已用完,没有更多可用的 RAM。

我们是一个小型的地方政府组织,拥有约 50 名 DW 的常规用户。在正常的日常使用中,它运行良好。我们获得了良好的 mdx 查询性能,并且我们的报告和仪表板速度很快。用户很高兴。

然而,我们的 ETL 过程整夜运行,当同时处理数据集市时,我们开始看到内存压力的迹象。昨晚 SSIS 因“内存不足错误”的警告而失败。

我们现有的 DW 服务器是 Win 2008 R2,带有 4 个 CPU 和 16Gb 的 RAM,运行 SQL 2012 Std。我将最大服务器内存设置为 12GB,为操作系统和服务等留出 4GB。我们现有的 DW 有 3 个数据集市/OLAP 多维数据集,我们正在开发另外 2 个。

+----------+----------+---------------+-----------+---------------+
| Datamart | Files GB |  Fact (Rows)  | Fact (Mb) | ETL & Process |
| OLAP cube|          |               |           | Time (hours)  |
+----------+----------+---------------+-----------+---------------+
| PBI      |       3  |  190,000      |  180      |  0.2          |
| FBI      |      30  |  26,100,000   |  10,000   |  1.5          |
| RBI      |     175  |  62,000,000   |  32,000   |  8.3          |
| ABI*     |     100  |  44,050,000   |  21,000   |  4.0          |
| EBI*     |      11  |  100,000,000  |  6,000    |  2.0          |
+----------+----------+---------------+-----------+---------------+
* Planned/Estimated
Run Code Online (Sandbox Code Playgroud)

我们的新服务器计划是运行 SQL 2016 Enterprise 的 Win 2012。它将运行 SQL、SSIS、SSRS 和 SSAS。存储不是问题,但我不确定 RAM 和 CPU。

根据SQL Server 2012快速跟踪数据仓库参考指南,对于 2 插槽机器,我应该拥有的最小值为 128Gb ......这似乎有点过分。安装 SQL Server 2016硬件和软件要求建议SQL 2016至少使用 4Gb 的 RAM。这是一个很大的不同!

那么.. 一个好的起点是什么?32Gb?64Gb?我如何向 IT 证明我的起始位置(规范)是合理的?

是否有关于如何计算服务器资源的好指南?

有什么好的经验法则吗?

在 DW 上下文中调整 RAM 大小的关键因素/指标是什么?

  • 数据量?
  • 立方体的数量?
  • 执行 ETL 或处理多维数据集所需的时间?
  • 一夜之间的峰值处理负载或最终用户在白天看到的性能?

Bre*_*zar 9

很好的问题,几年前我在 TechEd 上做了一个名为“构建最快的 SQL 服务器”的会议:

https://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/DBI328

在其中,我解释了对于数据仓库,您需要能够以足够快的速度提供数据以供 SQL Server 使用的存储。Microsoft 构建了一系列名为 Fast Track Data Warehouse Reference Architecture 的白皮书,其中详细介绍了硬件细节,但基本思想是您的存储需要能够在每个 CPU 内核中提供 200-300MB/秒的顺序读取性能。以保持 CPU 忙碌。

可以缓存在内存中的数据越多,存储的速度就越慢。但是您的内存少于缓存您正在处理的事实表所需的内存,因此存储速度变得非常重要。

以下是您的后续步骤:

  • 看那个视频
  • 使用CrystalDiskMark测试您的存储(方法如下
  • 使用 4 个内核,您需要至少800MB/秒的顺序读取吞吐量
  • 如果没有,请考虑添加内存直到痛苦消失(并且在 RAM 中缓存整个数据库并非不可想象)

假设您有一个 200GB 的数据库正在处理,但您无法获得足够的存储吞吐量来保持核心繁忙。不仅需要 200GB 的 RAM,而且需要更多 RAM 并不是不可想象的 - 因为毕竟,SSIS 和 SSAS 确实希望在内存中完成它们的工作,因此您必须拥有可用的引擎数据,以及 SSIS 和 SSAS 的工作空间。

这也是人们试图将 SSIS 和 SSAS 分离到不同虚拟机上的原因——它们都同时需要内存。