Pour utiliser le mode hybride plus efficacement, procédez comme suit :
Evitez d'utiliser le calcul à deux passes en mode hybride. Utilisez plutôt l'ordre de résolution.
Convertissez les membres stockés de niveau autre que 0 en membres de calcul dynamique chaque fois que cela est possible.
Si la conversion en membres de calcul dynamique affecte l'ordre de résolution des formules dépendantes, vous aurez peut-être besoin d'ajuster l'ordre des dimensions de l'outline afin d'aligner l'ordre de résolution sur l'ordre de calcul par lot précédent et les paramètres de calcul à deux passes.
L'ordre de résolution par défaut pour les cubes en mode hybride est semblable à l'ordre de calcul des cubes en mode "block storage", avec certaines améliorations. Si vous voulez utiliser un ordre de résolution autre que celui par défaut, vous pouvez définir un ordre de résolution personnalisé pour les dimensions et les membres.
Le traitement d'une formule calculée de manière dynamique dans le mauvais ordre de résolution peut entraîner l'exécution d'un trop grand nombre de formules par la requête, ce qui dégrade les performances. Dès que possible, la formule dispersée calculée de manière dynamique doit être au-dessus des dimensions dispersées agrégées hiérarchiquement dans l'ordre de résolution.
Certaines applications ne le permettent pas car un ordre de résolution différent est nécessaire pour obtenir les bons résultats de formule. Par exemple, une application avec des unités et des prix doit exécuter la valeur des ventes avant les agrégations dispersées pour obtenir la valeur correcte des ventes aux niveaux supérieurs.
Vous devrez peut-être ajuster les configurations denses et dispersées des dimensions (s'applique uniquement à l'utilisation du moteur en mode "block storage" dans les cas où le moteur hybride ne peut pas être utilisé).
Réduisez la taille des blocs, si possible.
Les administrateurs Essbase peuvent utiliser les outils suivants pour surveiller et optimiser les performances de requête en mode hybride :
Pour limiter la quantité de mémoire consommable par une même requête, utilisez le paramètre de configuration MAXFORMULACACHESIZE.
Si votre cube comprend des formules de membre complexes avec des opérateurs inter-dimensionnels et plusieurs instructions IF/ELSE, les pertes potentielles de performances peuvent être dues à l'exécution des formules. Si vous soupçonnez un tel problème, vous pouvez activer le traitement des requêtes ascendantes pour le calcul de formules. Cela permet d'optimiser les temps de requête en identifiant les croisements requis pour le calcul. Les temps de requête sont alors proportionnels à la taille des données d'entrée.
Afin d'effectuer ces optimisations de requête pour la version 21C, utilisez le paramètre de configuration QUERYBOTTOMUP ainsi que la fonction de calcul @QUERYBOTTOMUP. Pour la version 19C, utilisez le paramètre de configuration IGNORECONSTANTS avec la syntaxe BOTTOMUP, ainsi que la fonction de calcul @NONEMPTYTUPLE.
Utilisez la fonction de trace de requête pour surveiller et déboguer les performances de requête. Plusieurs paramètres de configuration de niveau application sont disponibles, en fonction de votre cas d'emploi. Utilisez QUERYTRACE pour le débogage à court terme d'une seule requête jugée problématique. Utilisez TRACE_REPORT pour la collecte de statistiques sur des requêtes exécutées simultanément (idéale pour le débogage dans un environnement de développement). Utilisez LONGQUERYTIMETHRESHOLD dans les environnements de production pour imprimer dans le fichier journal de l'application les statistiques sur les requêtes dont l'exécution dépasse la durée définie.