Estoy tratando de escribir una especificación para un servidor de depósito de datos para nuestra actualización planificada del depósito de datos.
A medida que ejecutamos servidores virtuales en hosts VMWare, tenemos la capacidad de agregar o eliminar recursos según sea necesario. En el pasado, hemos agregado RAM y CPU de forma incremental según sea necesario. A medida que aumentaron nuestras demandas, presionamos para obtener más recursos. (principalmente disco y RAM).
Pedimos más Nos dan lo menos posible.
Sin embargo, recientemente, cada vez que hablamos de recursos, ahora somos criticados por no especificar la máquina en primer lugar, y ahora me dicen que los hosts de desarrollo están al máximo, no hay más RAM disponible.
Somos una pequeña organización del gobierno local con ~ 50 usuarios habituales del DW. En el uso diario normal funciona bien. Obtenemos un buen rendimiento de consultas mdx, y nuestros informes y paneles son rápidos. Los usuarios están contentos.
Sin embargo, nuestros procesos ETL se ejecutan durante toda la noche, y estamos comenzando a ver evidencia de presión en la memoria cuando procesamos datamarts simultáneamente. Anoche, SSIS falló con advertencias sobre un "error de falta de memoria".
Nuestro servidor DW existente es Win 2008 R2 con 4 CPU y 16 Gb de RAM con SQL 2012 Std. Tengo la memoria máxima del servidor establecida en 12 GB, dejando 4 GB para el sistema operativo y los servicios, etc. Nuestro DW existente tiene 3 cubos de datamarts / OLAP, y estamos desarrollando 2 más.
+----------+----------+---------------+-----------+---------------+
| 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
Se planea que nuestro nuevo servidor sea Win 2012 con SQL 2016 Enterprise. Ejecutará SQL, SSIS, SSRS y SSAS. El almacenamiento no es un problema, pero no estoy seguro acerca de la RAM y la CPU.
De acuerdo con la Guía de referencia de Fast Track Data Warehouse para SQL Server 2012 , el mínimo que debería tener es 128 Gb para una máquina de 2 sockets ... lo que parece un poco excesivo. Los requisitos de hardware y software para instalar SQL Server 2016 recomiendan un mínimo de 4 Gb de RAM para SQL 2016. ¡Esa es una gran diferencia!
Entonces ... ¿Cuál es un buen punto de partida? 32Gb? 64Gb? ¿Cómo justifico mi posición inicial (especificación) a TI?
¿Hay alguna buena guía sobre cómo calcular los recursos del servidor?
¿Hay alguna buena regla general?
¿Cuáles son las métricas / ingredientes clave para el dimensionamiento de RAM en un contexto DW?
- El volumen de datos?
- ¿El número de cubos?
- ¿El tiempo que lleva hacer ETL o procesar un cubo?
- ¿Carga de procesamiento máxima durante la noche o rendimiento según lo visto por los usuarios finales durante el día?