J'essaie d'écrire une spécification pour un serveur d'entrepôt de données pour notre mise à niveau planifiée de l'entrepôt de données.
Comme nous exécutons des serveurs virtuels sur des hôtes VMWare, nous avons la possibilité d'ajouter ou de supprimer des ressources si nécessaire. Dans le passé, nous avons ajouté progressivement de la RAM et du CPU, au besoin. Comme nos demandes ont augmenté, nous avons fait pression pour obtenir plus de ressources. (principalement disque et RAM).
Nous en redemandons. Ils nous en donnent le moins possible.
Cependant, récemment, chaque fois que nous parlons de ressources, nous sommes maintenant critiqués pour ne pas avoir spécifié la machine en premier lieu, et on me dit maintenant que les hôtes de développement sont au maximum, il n'y a plus de RAM disponible.
Nous sommes une petite organisation de gouvernement local avec environ 50 utilisateurs réguliers du DW. En utilisation quotidienne normale, il fonctionne bien. Nous obtenons de bonnes performances de requête mdx, et nos rapports et tableaux de bord sont rapides. Les utilisateurs sont contents.
Cependant, nos processus ETL fonctionnent toute la nuit et nous commençons à voir des preuves de la pression de la mémoire lors du traitement simultané des datamarts. Hier soir, SSIS a échoué avec des avertissements concernant une "erreur de mémoire insuffisante".
Notre serveur DW existant est Win 2008 R2 avec 4 CPU et 16 Go de RAM exécutant SQL 2012 Std. J'ai la mémoire maximale du serveur réglée à 12 Go, laissant 4 Go pour le système d'exploitation et les services, etc. Notre DW existant dispose de 3 cubes datamarts / OLAP, et nous développons 2 autres.
+----------+----------+---------------+-----------+---------------+
| 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
Notre nouveau serveur devrait être Win 2012 exécutant SQL 2016 Enterprise. Il exécutera SQL, SSIS, SSRS et SSAS. Le stockage n'est pas un problème, mais je ne suis pas sûr de la RAM et du CPU.
Selon le guide de référence de l'entrepôt de données Fast Track pour SQL Server 2012 , le minimum que je devrais avoir est de 128 Go pour une machine à 2 sockets ... ce qui semble un peu excessif. La configuration matérielle et logicielle requise pour l'installation de SQL Server 2016 recommande un minimum de 4 Go de RAM pour SQL 2016. C'est toute une différence!
Alors .. Qu'est-ce qu'un bon point de départ? 32 Go? 64 Go? Comment puis-je justifier ma position de départ (spécification) auprès de l'informatique?
Existe-t-il de bons guides sur la façon de calculer les ressources du serveur?
Existe-t-il de bonnes règles générales?
Quels sont les ingrédients / mesures clés pour le dimensionnement de la RAM dans un contexte DW?
- Le volume de données?
- Le nombre de cubes?
- Le temps qu'il faut pour faire ETL ou traiter un cube?
- Charge de traitement maximale pendant la nuit ou performances vues par les utilisateurs finaux pendant la journée?