Caches Essbase et performances de calcul

Pour optimiser les performances de calcul, en particulier pour les calculs volumineux, Essbase utilise des caches pour coordonner l'utilisation de la mémoire. Assurez-vous que le cache du calculateur, s'il est utilisé, est suffisamment grand pour optimiser les calculs. Vérifiez comment le cache d'index, le cache de données, le cache de calcul dynamique et le cache d'application peuvent être pertinents.

Lors du calcul d'un cube, Essbase utilise environ 30 octets de mémoire par membre dans l'outline. Par conséquent, si le cube compte 5 000 membres, Essbase a besoin d'environ 150 ko de mémoire pour le calculer.

Remarques :

Vous pouvez éviter une utilisation excessive de la mémoire en combinant des scripts de calcul. Vous pouvez obtenir de bonnes performances en utilisant le calcul parallèle avec un seul script de calcul. Reportez-vous à Utilisation du calcul parallèle.

Essbase utilise la mémoire pour optimiser les performances des calculs, en particulier pour les calculs volumineux. La quantité de mémoire utilisée n'est pas contrôlable, sauf en modifiant la taille du contour du cube. Toutefois, vous pouvez vous assurer que les tailles de cache mémoire permettent à Essbase d'optimiser le calcul.

Essbase utilise les caches suivants pour coordonner l'utilisation de la mémoire :

  • Cache du calculateur.

    Lorsque vous calculez un cube pour la première fois, la taille du cache du calculateur est importante pour les performances du calcul. Si possible, assurez-vous que le cache de calculateur est suffisamment volumineux pour qu'Essbase utilise l'option de cache de calculateur optimale.

    Reportez-vous à Taille du cache de calculateur.

  • Cache du calculateur dynamique. Voir Redimensionner les caches du calculateur dynamique.

  • Cache d'index. Si le cube est volumineux, le cache d'index par défaut n'est pas suffisamment volumineux pour fournir des performances de calcul optimales. Reportez-vous à la propriété de configuration de l'application INDEXCACHESIZE ou à la propriété MaxL Alter Database set index_cache_size.

  • Cache de données. Reportez-vous à la propriété de configuration de l'application DATACACHESIZE ou à la propriété MaxL Alter Database set data_cache_size.

  • Cache de fichier des données.

  • Cache d'application. Si le mode hybride est utilisé dans les cubes en mode "block storage", le cache d'application peut vous aider à gérer l'utilisation de la mémoire pour les extractions. Le cache d'application est similaire au cache en mode "aggregate storage". Pour plus d'informations, reportez-vous à la section Aggregate Storage Cache.

Taille du cache de la calculatrice

La taille optimale du cache de calculateur Essbase, si vous l'utilisez, dépend du nombre et de la densité des dimensions dispersées dans l'outline. Comprendre le bitmap du cache du calculateur vous aidera à dimensionner de manière optimale le cache du calculateur.

Pour optimiser la gestion des blocs, Essbase peut créer un bitmap, dont la taille est contrôlée par la taille du cache de calculateur, afin d'enregistrer et de suivre les blocs de données au cours d'un calcul. Le bitmap est une méthode d'extraction plus rapide pour Essbase que les E/S de disque, en particulier si vous calculez un cube pour la première fois ou si vous calculez un cube avec des données dispersées.

Essbase utilise le bitmap du cache du calculateur si la base de données comporte au moins deux dimensions dispersées et que l'une des conditions suivantes est également remplie :

  • Vous calculez au moins une dimension dispersée complète.

  • Vous indiquez la commande SET CACHE ALL dans un script de calcul.

Bitmap A propos du cache de calculatrice

Pour le cache du calculateur, Essbase sépare les dimensions dispersées en deux groupes :

  • Dimensions bitmap : dimensions dispersées qu'Essbase insère dans le bitmap jusqu'à ce qu'il soit plein. Chaque combinaison de membres des dimensions dispersées placées dans le bitmap occupe 1 bit de mémoire. Il doit y avoir suffisamment d'espace dans le bitmap pour que chaque combinaison de membres d'une dimension dispersée puisse être placée dans le bitmap.

  • Dimensions d'ancrage : les dimensions dispersées restantes dans l'outline de la base de données qui ne tiennent pas dans le bitmap.

Essbase commence par la première dimension dispersée dans l'outline et s'intègre le plus possible dans le bitmap. Les dimensions qui conviennent sont les dimensions bitmap. Etant donné que le cache de la calculatrice contrôle la taille du bitmap, le nombre de dimensions dispersées pouvant s'adapter dépend de la taille du cache de la calculatrice.

Les autres dimensions dispersées sont les dimensions d'ancrage. Pour les dimensions d'ancrage, Essbase ne peut pas utiliser le bitmap pour déterminer si des blocs existent.

Pour voir quelles dimensions sont des dimensions d'ancrage et quelles sont les dimensions bitmap, utilisez la commande de calcul SET MSG DETAIL pour afficher les informations bitmap dans le journal de l'application.

Classez soigneusement les dimensions dispersées dans l'outline de sorte que le plus de dimensions possible puisse être placé dans le bitmap. Commencez par la dimension qui contient le moins de membres et continuez jusqu'à ce que la dimension contenant le plus de membres soit la dernière. Cet ordre permet d'intégrer davantage de dimensions dans le bitmap et d'améliorer les performances de calcul.

Remarques :

L'ordre des dimensions dispersées dans l'outline affecte également les performances des interrogations. Voir Concevoir un plan pour optimiser les performances.

Essbase utilise un bitmap unique s'il existe plusieurs dimensions d'ancrage (ou si le cache du calculateur n'est pas suffisamment grand pour prendre en charge plusieurs bitmaps) et utilise plusieurs bitmaps s'il existe une dimension d'ancrage. Un bitmap unique utilise le moins de mémoire possible, mais il est moins efficace que plusieurs bitmaps.

Plusieurs bitmaps utilisent plus de mémoire, mais sont plus rapides qu'un seul bitmap. Un bitmap suit les blocs enfant et un seul suit les blocs parent. L'amélioration des performances est particulièrement importante lorsque vous calculez la base pour la première fois.

Le nombre de bitmaps utilisés est déterminé par le nombre maximum de parents dépendants pour tous les membres de la dimension d'ancrage. Un membre a un parent dépendant, sauf s'il a un membre partagé. Prenons par exemple la dimension Product de la base de données Sample.Basic. Le membre Cola (100-10) a un parent, Colas (100). Cependant, Diet Cola (100-20) a deux parents, Diet Drinks (Diet) et Colas (100). Aucun membre du Produit n'a plus de deux parents à charge. Par conséquent, si Product est la dimension d'ancrage, les parents dépendants maximum sont deux.

Essbase choisit l'une des trois options, comme indiqué dans le tableau ci-dessous, pour le calcul :

Tableau 34-2 Options de cache de calculatrice

Option Méthode Evaluation de la performance

1

Dimension d'ancrage unique, plusieurs bitmaps

1

2

Dimension d'ancrage unique, bitmap unique

2

3

Dimensions d'ancrage multiples, bitmap unique

3

Essbase choisit la méthode de performance optimale pour un calcul, en fonction de la taille du cache du calculateur. Si la taille du cache de calculateur est trop petite pour l'une des options ci-dessus, Essbase n'utilise pas de cache de calculateur. Les performances de calcul peuvent être considérablement altérées.

L'activation du calcul parallèle peut modifier l'option de cache de calculatrice utilisée. Reportez-vous à Relation entre le calcul parallèle CALCPARALLEL et d'autres fonctionnalités Essbase.

Attention :

Si vous calculez la base de données pour la première fois, la taille du cache de calcul est particulièrement importante pour les performances des calculs. Si possible, assurez-vous que le cache de calculateur est suffisamment volumineux pour qu'Essbase utilise l'option de cache de calculateur optimale.

Détermination de la taille du cache du calculateur

La taille optimale du cache de la calculatrice dépend de la mémoire disponible du système ainsi que de la nature et de la configuration du cube.

A l'aide de la formule suivante, vous pouvez calculer la taille de cache du calculateur requise pour Essbase afin de choisir chacune des trois options de la table Options de cache du calculateur ci-dessus :

Calculator cache = Bitmap size in bytes * Number of bitmaps

où :

Bitmap size in bytes = Max ((member combinations on the bitmap dimensions / 8), 4)

et où

Number of bitmaps = Maximum number of dependent parents in the anchoring dimension + 2 constant bitmaps

Remarques :

La taille minimale du bitmap est de 4 octets. Si (combinaisons de membres sur les dimensions bitmap/8) est inférieur à 4 octets, Essbase utilise une taille bitmap de 4 octets.

Prenons un exemple de cube avec cinq dimensions dispersées (S1 à S5) :

Tableau 34-3 Exemple : Exemple de cube avec cinq dimensions dispersées

Dimension dispersée Nombre de membres Parents à charge

S1

20

Non applicable.

S2

20

Non applicable.

S3

50

Non applicable.

S4

50

Non applicable.

S5

200

3

Utilisez cet exemple de cube pour les exemples de calcul suivants :

  • Option 1 : Dimension d'ancrage unique, Bitmaps multiples
  • Option 2 : dimension d'ancrage unique, bitmap unique
  • Option 3 : Dimensions d'ancrage multiples, bitmap unique

Option 1 : Dimension d'ancrage unique, Bitmaps multiples

Pour cet exemple de calcul, supposons les faits suivants concernant une base de données :

  • Dimensions bitmap : S1, S2, S3, S4

  • Dimension d'ancrage : S5

  • Les parents dépendants dans la dimension d'ancrage : 3

Effectuez le calcul suivant :

Bitmap size in bytes = (S1 * S2 * S3 * S4) / 8
                     = (20 * 20 * 50 * 50) / 8
                     = 125,000 bytes

Number of bitmaps = Maximum number of dependent parents in the anchoring dimension
                  = + 
                  = 2 constant bitmaps
                  = 3 + 2
                  = 5

Calculator cache = Bitmap size * Number of bitmaps
                 = 125,000 * 5
                 = 625,000 bytes

Pour qu'Essbase utilise plusieurs bitmaps pour cette base de données avec une dimension d'ancrage, le cache du calculateur doit être de 625 000 octets.

Option 2 : dimension d'ancrage unique, bitmap unique

Pour cet exemple de calcul, supposons les faits suivants concernant une base de données :

  • Dimensions bitmap : S1, S2, S3, S4

  • Dimension d'ancrage : S5

  • Les parents dépendants dans la dimension d'ancrage : non applicable

Effectuez le calcul suivant :

Bitmap size in bytes = (S1 * S2 * S3 * S4) / 8
                     = (20 * 20 * 50 * 50) / 8
                     = 125,000 bytes

Number of bitmaps = Single bitmap
                  = 1

Calculator cache = Bitmap size * Number of bitmaps
                 = 125,000 * 1
                 = 125,000 bytes

Pour qu'Essbase utilise un bitmap unique pour cette base de données avec une dimension d'ancrage, le cache de calculateur doit être de 125 000 octets.

Option 3 : Dimensions d'ancrage multiples, bitmap unique

Pour cet exemple de calcul, supposons les faits suivants concernant une base de données :

  • Dimensions bitmap : S1, S2, S3

  • Dimensions d'ancrage : S4, S5

  • Les parents dépendants dans les dimensions d'ancrage : non applicable

Effectuez le calcul suivant :

Effectuez le calcul suivant :

Bitmap size in bytes = (S1 * S2 * S3) / 8
                     = (20 * 20 * 50) / 8
                     = 2,500 bytes

Number of bitmaps = Single bitmap
                  = 1

Calculator cache = Bitmap size * Number of bitmaps
                 = 2,500 * 1
                 = 2,500 bytes

Pour qu'Essbase utilise un bitmap unique pour cette base de données avec plusieurs dimensions d'ancrage, le cache du calculateur doit être de 2 500 octets.

Le tableau suivant indique l'option de cache de calculatrice utilisée par Essbase, en fonction de la taille de cache de calculatrice spécifiée :

Tableau 34-4 Sélection de l'option de cache de calculatrice en fonction de la taille de cache de calculatrice

Taille minimale spécifiée Option choisie

625,000 octets

Option 1 (performances optimales)

125,000 bytes

Option 2

2 500 octetsFoot 1

Option 3

Note 1

Si vous indiquez une taille de cache de calculatrice inférieure à 2 500 octets, Essbase n'utilise pas de cache de calculatrice pendant le calcul. Les performances de calcul peuvent être considérablement altérées.

Vous pouvez vérifier quelle option de cache de calcul Essbase peut utiliser à l'aide de la commande SET MSG SUMMARY dans un script de calcul. Exécutez le script de calcul suivant sur le cube vide :

SET MSG SUMMARY;
CALC ALL;

Essbase affiche le paramètre de cache du calculateur dans le journal de l'application. Reportez-vous à Commandes SET pour les tests de calcul et les statistiques.

La taille maximale du cache de calculateur que vous pouvez spécifier est de 200 000 000 octets. La longueur par défaut est de 200,000 octets. La taille de cache de la calculatrice que vous choisissez dépend de la mémoire disponible et de la configuration du cube.

Remarques :

Les tailles du calculateur, de l'index, du fichier de données et des caches de données ont généralement un effet plus important sur les performances si le calcul est basé davantage sur des agrégations et moins sur des calculs de formule.

Si vous calculez le cube pour la première fois, la taille du cache de la calculatrice est particulièrement importante. Si possible, assurez-vous que le cache de calculateur est suffisamment volumineux pour qu'Essbase utilise l'option 1.

Vous pouvez utiliser la taille de cache de la calculatrice par défaut ou définir la taille du cache de la calculatrice dans un script de calcul. Si vous définissez la taille à partir d'un script de calcul, ce paramètre est utilisé uniquement pour la durée du script de calcul. Reportez-vous à la commande SET CACHE du script de calcul et au paramètre de configuration CALCCACHE.

Taille des caches du calculateur dynamique

Pour chaque cube ouvert, Essbase alloue une zone dans un cache de calculateur dynamique pour les blocs de données. Pour déterminer si le cache de calcul dynamique est utilisé efficacement, consultez le journal de l'application et les paramètres de configuration.

Vérifier l'utilisation du cache du calculateur dynamique

Le paramètre de configuration DYNCALCCACHEMAXSIZE spécifie la taille maximale de chaque cache de calculateur dynamique sur le serveur Essbase. Par défaut, la taille est définie sur 20 Mo. Essbase alloue une zone dans un cache de calcul dynamique pour les blocs de données jusqu'à ce que la zone de mémoire maximale spécifiée par le paramètre DYNCALCACHEMAXSIZE soit allouée.

Essbase écrit deux messages dans le journal de l'application pour chaque extraction de données. Dans l'exemple suivant (tronqué), le premier message décrit la durée totale requise pour l'extraction :

[2024-07-27T16:43:52.707+00:00] ... [EXEC_TIME: 0.53] Regular extractor completed successfully
[2024-07-27T16:43:52.707+00:00] ... Regular Extractor Big Block Allocs -- Dyn.Calc.Cache : [30] non-Dyn.Calc.Cache : [0]

Si un cache de calculateur dynamique est utilisé, un second message affiche le nombre de blocs calculés dans le cache de calculateur de données (Dyn.Calc.Cache : [n]) et le nombre de blocs calculés en mémoire en dehors du cache de calculateur dynamique (non-Dyn.Calc.Cache : [n]).

Pour déterminer si le cache de calcul dynamique est utilisé efficacement, vérifiez les deux messages et tenez compte des paramètres de configuration. Par exemple, si le message indique que les blocs ont été calculés en dehors et dans un cache de calcul dynamique, vous pouvez augmenter le paramètre DYNCALCCACHEMAXSIZE.

Si la taille maximale spécifiée est tout ce que vous pouvez vous permettre, et si l'utilisation de la mémoire en dehors du cache du calculateur pour effectuer des extractions calculées dynamiquement entraîne des retards inacceptables, définissez DYNCALCCACHEWAITFORBLK sur Vrai.

Vous pouvez utiliser l'instruction MaxL de la base de données d'interrogation avec la grammaire Statistiques de performances pour afficher un récapitulatif de l'activité du cache du calculateur dynamique.

Modifier la taille du cache du calculateur dynamique

Cinq paramètres de configuration sont pertinents pour les caches du calculateur dynamique. Les valeurs optimales de ces paramètres dépendent de la mémoire de l'ordinateur Essbase Server, de la configuration des bases de données Essbase et de la nature des requêtes utilisateur.

La description suivante de chaque paramètre de configuration inclut des recommandations sur la façon de déterminer les valeurs de votre système. Pour répondre aux exigences uniques de votre site, vous devrez peut-être tester et ajuster les paramètres.

  • DYNCALCCACHEMAXSIZE : ce paramètre spécifie la taille maximale que Essbase peut allouer à chaque cache de calculateur dynamique.

    Valeur de réglage recommandée = C * S * U.

    • C est la valeur du nombre maximal de blocs que Essbase doit corriger (obtenir l'adressabilité) lors du calcul d'un bloc. Habituellement, une valeur de 100 est une bonne approximation pour cette valeur. Ce nombre peut être plus élevé si vous consolidez un très grand nombre d'enfants dans un calcul de formule.

    • S est la taille du plus grand bloc développé dans toutes les bases de données de l'ordinateur Essbase Server. Pour calculer la taille de bloc développée, multipliez le nombre de membres (y compris les membres de calcul dynamique et les membres de séries temporelles dynamiques) dans chaque dimension dense pour le nombre de cellules dans le bloc, et multipliez le nombre de cellules par la taille de chaque cellule de membre, 8 octets.

      Par exemple, considérez le nombre de membres dans les dimensions denses dans Sample.Basic (les membres Label Only ne sont pas comptés) :

      • 19 (année, avec 12 membres stockés et 7 membres de calcul dynamique, y compris HTD et QTD)

      • 14 (Mesures, avec 8 membres stockés et 6 membres de calcul dynamique)

      • 4 (Scénario, avec 2 membres stockés et 2 membres de calcul dynamique)

      S = 19 * 14 * 4 cellules (8 octets / cellule) = 8512 octets par bloc

      Ce nombre est indiqué dans le journal de l'application en tant que taille de bloc logique.

    • U est le nombre maximum d'utilisateurs simultanés attendus sur la base de données qui a le plus grand nombre d'utilisateurs simultanés.

      L'affectation de la valeur 0 (zéro) à DYNCALCACHEMAXSIZE indique à Essbase de ne pas utiliser de caches de calculateur dynamique.

      Par défaut, la taille de cette valeur est de 20 Mo (20 971 520 octets).

  • DYNCALCCACHEWAITFORBLK : si Essbase utilise toute la zone allouée pour un cache de calculateur dynamique, ce paramètre indique à Essbase s'il faut attendre que l'espace soit disponible dans le cache ou écrire et calculer immédiatement les blocs en mémoire en dehors du cache. Si le cache est trop petit, plusieurs threads peuvent être dans la file d'attente.

    Valeur de paramètre recommandée = FALSE (valeur par défaut).

    Avant de définir sur Vrai, essayez les alternatives suivantes :

    • Ajouter de la mémoire physique à la machine serveur

    • Augmentez la valeur de DYNCALCCACHEMAXSIZE, testez et répétez jusqu'à ce que vous vérifiiez que vous ne pouvez plus utiliser de mémoire pour le cache du calculateur dynamique.

  • DYNCALCCACHEBLKTIMEOUT : si Essbase doit attendre l'espace disponible dans le cache du calculateur dynamique, ce paramètre définit la durée d'attente.

    Valeur de réglage recommandée = WT / B.

    • WT est le temps d'attente maximal tolérable pour une requête (par exemple, 5 secondes).

    • B est le nombre total de blocs logiques accédés dans l'interrogation la plus volumineuse.

      Pour déterminer la valeur de B, recherchez dans le journal d'application le plus grand nombre d'allocations de bloc Dyn.Calc.Cache pour une requête.

  • DYNCALCCACHEBLKRELEASE : si Essbase a attendu que le temps et l'espace indiqués ne soient toujours pas disponibles dans le cache du calculateur dynamique, ce paramètre indique à Essbase s'il faut écrire et calculer les blocs immédiatement en dehors du cache du calculateur dynamique ou créer de l'espace en remplaçant les blocs et en compressant temporairement les blocs swap dans un tampon.

    Valeur de paramètre recommandée = FALSE (valeur par défaut).

    Définissez la valeur sur Vrai uniquement si vous rencontrez de graves problèmes de mémoire insuffisante.

  • DYNCALCCACHECOMPRBLKBUFSIZE : si Essbase a attendu le temps d'attente indiqué et que le paramètre DYNCALCCACHEBLKRELEASE a la valeur TRUE, ce paramètre correspond à la taille du tampon de bloc compressé du cache du calculateur dynamique.

    Valeur de réglage recommandée = (C * S) / 2

    où C est la valeur du nombre maximal de blocs que Essbase doit corriger (obtenir l'adressabilité) lors du calcul d'un bloc, et S est la taille du bloc étendu le plus important dans toutes les bases de données de l'ordinateur. Calculez C et S de la même manière que décrit ou le paramètre DYNCALCCACHEMAXSIZE.