Oracle Analytics Cloud maintient une mémoire cache locale des jeux de résultats d'interrogation dans la mémoire cache d'interrogation.
Rubriques :
La mémoire cache d'interrogation permet à Oracle Analytics Cloud de répondre à de nombreuses demandes d'interrogation successives sans accéder aux sources de données dorsales et d'améliorer ainsi le rendement. Toutefois, les entrées de la mémoire cache d'interrogation risquent de devenir périmées, car les mises à jour se produisent sur les sources de données dorsales.
La manière la plus rapide de traiter une interrogation consiste à ignorer la majorité du traitement et d'utiliser une réponse précalculée.
Avec la mise en mémoire cache des interrogations, Oracle Analytics Cloud stocke les résultats précalculés des interrogations dans une mémoire cache locale. Si une autre interrogation peut utiliser ces résultats, le traitement intégral de la base de données est éliminé pour cette interrogation. Le temps de réponse moyen aux interrogations peut ainsi être grandement amélioré.
Outre l'amélioration de la performance, pouvoir répondre à une interrogation à partir d'une mémoire cache locale conserve les ressources du réseau et le temps de traitement sur le serveur de base de données. Les ressources du réseau sont conservées, car les résultats intermédiaires ne sont pas retournés dans Oracle Analytics Cloud. Ne pas exécuter l'interrogation sur la base de données libère le serveur de base de données pour d'autres travaux. Si la base de données utilise un système de rajustement, exécuter moins d'interrogations peut également réduire les coûts du budget.
Les économies de temps de traitement dans Oracle Analytics Cloud, en particulier si les résultats de l'interrogation sont extraits de plusieurs bases de données, représentent un autre avantage de l'utilisation de la mémoire cache pour répondre à une interrogation. Selon l'interrogation, le traitement de jointure et de tri dans le serveur peut être considérable. Si l'interrogation est déjà calculée, ce traitement est évité, ce qui libère les ressources du serveur pour d'autres tâches.
En résumé, la mise en mémoire cache des interrogations peut beaucoup améliorer le rendement des interrogations et réduire le trafic sur le réseau, le traitement de la base de données et les frais généraux liés au traitement.
La mise en mémoire cache des interrogations présente de nombreux avantages évidents, mais également certains coûts.
Potentiel pour les résultats mis en mémoire cache d'être périmés
Coûts administratifs de la gestion de la mémoire cache
En ce qui concerne la gestion de la mémoire cache, en général les avantages dépassent largement les coûts.
Certaines tâches d'administration sont associées à la mise en mémoire cache. Vous devez définir la durée de persistance de la mémoire cache pour chaque table physique de manière appropriée, basée sur la fréquence de la mise à jour des données dans cette table.
Lorsque la fréquence de la mise à jour varie, vous devez effectuer le suivi du moment où les modifications se produisent et épurer la mémoire cache manuellement le cas échéant.
Si les entrées de la mémoire cache ne sont pas éliminées lorsque les données des bases de données sous-jacentes sont modifiées, les interrogations peuvent potentiellement retourner des résultats qui sont périmés.
Vous devez évaluer si c'est acceptable. Il peut être acceptable d'autoriser la mémoire cache à contenir certaines données périmées. Vous devez décider quel niveau de données périmées est acceptable, puis configurer (et suivre) un jeu de règles pour refléter ces niveaux.
Par exemple, supposons qu'une application analyse les données d'entreprise d'un grand conglomérat et que vous effectuez des sommaires annuels sur les diverses divisions de la société. Les nouvelles données n'ont pas d'incidence matérielle sur les interrogations, car elles ont une incidence sur les synthèses de l'année suivante seulement. Dans ce cas, les choix amenant à décider s'il faut épurer la mémoire cache peuvent faire qu'il est plus avantageux de laisser les entrées dans la mémoire cache.
Supposons, toutefois, que les bases de données sont mises à jour trois fois par jour et que vous effectuez des interrogations sur les activités du jour courant. Dans ce cas, vous devez épurer la mémoire cache bien plus souvent ou peut-être envisager de ne pas l'utiliser du tout.
Un autre scénario consiste à recréer le jeu de données à partir du début à des intervalles réguliers (par exemple, une fois par semaine). Dans cet exemple, vous pouvez épurer toute la mémoire cache dans le cadre du processus de recréation du jeu de données, ce qui garantit que vous n'avez jamais de données périmées dans la mémoire cache.
Quelle que soit votre situation, vous devez évaluer ce qui est acceptable en termes d'informations non courantes retournées aux utilisateurs.
Si la connexion partagée est activée pour une réserve de connexions particulière, la mémoire cache peut être partagée par tous les utilisateurs et n'a pas besoin d'être prédéfinie pour chaque utilisateur.
Si la connexion partagée n'est pas activée et qu'une connexion à une base de données propre à l'utilisateur est utilisée, chaque utilisateur génère sa propre entrée de mémoire cache.
Dans Oracle Analytics Cloud, la mise en mémoire cache des interrogations est activée par défaut. Vous pouvez activer ou désactiver la mise en mémoire cache des interrogations dans la page Paramètres de système avancés.
Pour gérer les modifications des bases de données sous-jacentes et pour surveiller les entrées de la mémoire cache, vous devez développer une stratégie de gestion de la mémoire cache.
Vous avez besoin d'un processus pour invalider les entrées de la mémoire cache lorsque les données des tables sous-jacentes composent les modifications des entrées de la mémoire cache et d'un processus pour surveiller, identifier et supprimer toutes les entrées indésirables.
Cette section traite des sujets suivants :
Le choix d'une stratégie de gestion de la mémoire cache dépend de la volatilité des données des bases de données sous-jacentes et de la prédictibilité des modifications entraînant la volatilité.
Il dépend également du nombre et du type d'interrogations qui composent la mémoire cache et de leur utilisation. Cette section présente les diverses approches de la gestion de la mémoire cache.
Vous pouvez désactiver la mise en mémoire cache pour tout le système afin d'empêcher toutes les nouvelles entrées de la mémoire cache et toutes les nouvelles interrogations d'utiliser la mémoire cache existante. Désactiver la mise en mémoire cache vous permet de l'activer plus tard sans perdre les entrées qui sont stockées dans la mémoire cache.
Désactiver temporairement la mise en mémoire cache est une stratégie utile dans des situations où vous pouvez soupçonner que des entrées sont périmées, mais où vous voulez vérifier si elles le sont réellement avant de les éliminer ou d'épurer toute la mémoire cache. Si vous estimez que les données stockées dans la mémoire cache sont encore pertinentes ou après avoir éliminer en toute sécurité les entrées problématiques, vous pouvez activer la mémoire cache. Si nécessaire, épurez toute la mémoire cache ou la mémoire cache qui est associée à un modèle d'affaires particulier avant de l'activer de nouveau.
Vous pouvez définir un attribut pouvant être mis en mémoire cache pour chaque table physique, ce qui vous permet de spécifier si les interrogations pour cette table sont ajoutées à la mémoire cache afin de répondre aux interrogations futures.
Si vous activez la mise en mémoire cache d'une table, toutes les interrogations impliquant la table sont ajoutées à la mémoire cache. Toutes les tables peuvent être mises en mémoire cache par défaut. Toutefois, certaines tables peuvent ne pas être de bons candidats à inclure dans la mémoire cache sauf si vous configurez les paramètres de persistance de la mémoire cache appropriés. Par exemple, supposons qu'une table stocke des données de bannière boursière mises à jour toutes les minutes. Vous pouvez préciser que vous voulez éliminer les entrées de cette table toutes les 59 secondes.
Vous pouvez également utiliser les paramètres de persistance de la mémoire cache pour spécifier la durée pendant laquelle les entrées de cette table sont stockées dans la mémoire cache d'interrogation. Cette fonction est utile pour les sources de données qui sont mises fréquemment mises à jour.
Dans l'outil d'administration de modèle, dans la couche physique, cliquez deux fois sur la table physique.
Si vous utilisez le modélisateur sémantique, voir Quelles sont les propriétés générales d'une table physique?.
Dans la boîte de dialogue des propriétés Table physique , dans l'onglet Général, effectuez une des sélections suivantes :
Pour activer la mise en mémoire cache, sélectionnez Pouvant être mis en mémoire cache.
Pour empêcher une table d'être mise en mémoire cache, désélectionnez Pouvant être mis en mémoire cache.
Pour définir l'expiration d'une mémoire cache, spécifiez une durée de persistance de la mémoire cache et une unité de mesure (jours, heures, minutes ou secondes). Si vous ne voulez pas que les entrées de la mémoire cache expirent automatiquement, sélectionnez Validité permanente du cache.
Cliquez sur OK.
Lorsque vous modifiez des modèles sémantiques à l'aide du modélisateur sémantique ou de l'outil d'administration de modèle, les modifications peuvent avoir des implications pour les entrées stockées dans la mémoire cache. Par exemple, si vous modifiez la définition d'un objet physique ou d'une variable dynamique de modèle sémantique, les entrées de la mémoire cache qui référencent cet objet ou cette variable peuvent ne plus être valides. Ces modifications peuvent entraîner le besoin d'épurer la mémoire cache. Vous pouvez utiliser deux scénarios lorsque vous modifiez un modèle sémantique existant et lorsque vous créez (ou chargez) un nouveau modèle.
Modifications du modèle sémantique
Lorsque vous modifiez un modèle sémantique ou chargez un autre fichier .rpd, toutes les modifications apportées ayant une incidence sur les entrées de la mémoire cache entraînent automatiquement l'élimination de toutes les entrées de la mémoire cache qui référencent les objets modifiés. L'élimination se produit lorsque vous chargez les modifications. Par exemple, si vous supprimez une table physique d'un modèle sémantique, toutes les entrées de la mémoire cache qui référencent cette table sont éliminées au moment de l'archivage. Toutes les modifications apportées à un modèle sémantique dans la couche logique éliminent toutes les entrées de mémoire cache pour ce modèle.
Modifications des variables globales de modèle sémantique
Les valeurs des variables globales de modèle sémantique sont actualisées par les données retournées par les interrogations. Lorsque vous définissez une variable globale de modèle sémantique, vous créez un bloc d'initialisation ou vous en utilisez un qui existe déjà et qui contient une interrogation SQL. Vous configurez également une programmation pour exécuter l'interrogation et actualiser régulièrement la valeur de la variable.
Si la valeur d'une variable globale de modèle sémantique change, les entrées de la mémoire cache qui utilisent cette variable dans une colonne deviennent périmées et de nouvelles entrées sont générées lorsque les données de ces entrées sont de nouveau nécessaires. Les anciennes entrées de la mémoire cache ne sont pas supprimées immédiatement, mais sont nettoyées au moyen du mécanisme de mise en mémoire cache habituel.
Un des principaux avantages de la mise en mémoire cache des interrogations consiste à améliorer leur rendement.
La mise en mémoire cache des interrogations peut être utile pour prédéfinir la mémoire cache pendant les périodes creuse en exécutant les interrogations et en mettant en mémoire cache leurs résultats. Une bonne stratégie de prédéfinition exige que vous sachiez quand les présences dans la mémoire cache se produisent.
Afin de prédéfinir la mémoire cache pour tous les utilisateurs, utilisez l'interrogation suivante :
SELECT User, SRs
Après avoir prédéfini la mémoire cache à l'aide de SELECT User, SRs
, les interrogations suivantes représentent des présences dans la mémoire cache :
SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (and the user was USER1) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (and the user was USER2) SELECT User, SRs WHERE user = valueof(nq_SESSION.USER) (and the user was USER3)
Cette section traite des sujets suivants :
Lorsque la mise en mémoire cache est activée, chaque interrogation est évaluée pour déterminer si elle remplit les conditions d'une présence dans la mémoire cache.
Une présence dans la mémoire cache signifie qu'Oracle Analytics Cloud a pu utiliser la mémoire cache pour répondre à l'interrogation sans avoir eu besoin d'aller dans la base de données. Oracle Analytics Cloud peut utiliser la mémoire cache d'interrogation pour répondre à des interrogations au même niveau d'agrégation ou à un niveau supérieur.
De nombreux facteurs déterminent les présences dans la mémoire cache. Ces facteurs sont décrits dans le tableau ci-dessous.
Facteur ou règle | Description |
---|---|
Un sous-ensemble de colonnes de la liste |
Toutes les colonnes de la liste Cette règle décrit les conditions minimales d'une présence dans la mémoire cache, mais satisfaire à cette règle ne garantit pas une présence. Les autres règles listées dans ce tableau doivent également s'appliquer. |
Les colonnes de la liste |
Oracle Analytics Cloud peut calculer des expressions pour les résultats mis en mémoire cache afin de répondre à la nouvelle interrogation, mais toutes les colonnes doivent se trouver dans le résultat mis en mémoire cache. Par exemple, l'interrogation : SELECT product, month, averageprice FROM sales WHERE year = 2000 entraîne des présences dans la mémoire cache pour l'interrogation : SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000 , car |
La clause |
Pour que l'interrogation remplisse les conditions d'une présence dans la mémoire cache, les contraintes de la clause Une clause
En outre, les colonnes qui sont utilisées pour la clause SELECT employeename FROM employee, geography WHERE region in ('EAST', 'WEST') n'entraîne pas une présence dans la mémoire cache pour l'interrogation de prédéfinition de la liste précédente, car REGION ne figure pas dans la liste de projection. |
Les interrogations de dimension seulement doivent constituer une correspondance exacte. |
S'il s'agit d'une interrogation de dimension seulement, c'est-à-dire qu'aucun fait ou mesure n'est inclus dans l'interrogation, seule une correspondance exacte des colonnes de projection de l'interrogations mise en mémoire cache représente des présences dans la mémoire cache. Ce comportement empêche les faux positifs lorsqu'il existe plusieurs sources logiques pour une table de dimension. |
Les interrogations avec des fonctions spéciales doivent constituer une correspondance exacte. |
Les autres interrogations qui contiennent des fonctions spéciales comme les fonctions de série chronologique ( |
Le jeu de tables logiques doit correspondre |
Pour remplir les conditions d'une présence dans la mémoire cache, toutes les interrogations entrantes doivent avoir le même jeu de tables logiques que l'entrée de la mémoire cache. Cette règle empêche les fausses présences dans la mémoire cache. Par exemple, |
Les valeurs des variable de session doivent correspondre, notamment les variables de session de sécurité |
Si l'énoncé SQL logique ou physique réfère à des variables de session, les valeurs de ces variables doivent correspondre. Sinon, il ne s'agit pas d'une présence dans la mémoire cache. De plus, les valeurs des variables de session qui sont sensibles à la sécurité doivent correspondre aux valeurs des variables de session de sécurité définies dans le modèle sémantique, même si l'énoncé SQL logique lui-même ne référence pas les variables de session. Voir Garantir des résultats de la mémoire cache corrects lors de l'utilisation d'une sécurité de base de données au niveau de la rangée. |
Conditions de liaison équivalentes |
La table logique jointe obtenue d'une nouvelle demande d'interrogation doit être identique aux résultats mis en mémoire cache (ou un sous-ensemble) pour remplir les conditions d'une présence dans la mémoire cache. |
L'attribut |
Si une interrogation mise en mémoire cache élimine les enregistrements en double avec le traitement |
Les interrogations doivent contenir des niveaux d'agrégation compatibles |
Les interrogations qui demandent un niveau agrégé d'informations peuvent utiliser des résultats mis en mémoire cache à un niveau inférieur d'agrégation. Par exemple, l'interrogation suivante demande la quantité vendue au niveau du fournisseur, de la région et de la ville : SELECT supplier, region, city, qtysold FROM suppliercity L'interrogation suivante demande la quantité vendue au niveau de la ville : SELECT city, qtysold FROM suppliercity La deuxième interrogation entraîne une présence dans la mémoire cache pour la première interrogation. |
Agrégation supplémentaire limitée |
Par exemple, si une interrogation avec la colonne |
La clause |
Les interrogations pour trier par des colonnes qui ne sont pas contenues dans la liste de sélection entraînent des absences dans la mémoire cache. |
Diagnostic du comportement des présences dans la mémoire cache |
Pour mieux évaluer le comportement des présences dans la mémoire cache, réglez la variable de session ENABLE_CACHE_DIAGNOSTICS à 4, comme illustré dans l'exemple suivant : ENABLE_CACHE_DIAGNOSTICS=4 |
Lorsque vous utilisez une stratégie de sécurité de base de données au niveau de la rangée, par exemple une base de données privée virtuelle, les résultats de données retournés dépendent des données d'identification d'autorisation de l'utilisateur.
En conséquence, Oracle Analytics Cloud doit savoir si une source de données utilise une sécurité de base de données au niveau de la rangée et les variables qui sont pertinentes pour la sécurité.
Pour garantir que les présences dans la mémoire cache se produisent sur les entrées de la mémoire cache qui comprennent toutes les variables sensibles à la sécurité et y correspondent, vous devez configurer correctement l'objet de base de données et les objets de variable de session dans l'outil d'administration de modèle, comme suit :
Objet de base de données. Dans la couche physique, dans l'onglet Général de la boîte de dialogue Base de données, sélectionnez Base de données privée virtuelle pour spécifier que la source de données utilise la sécurité de base de données au niveau de la rangée.
Si vous utilisez la sécurité de base de données au niveau de la rangée avec la mise en mémoire cache partagée, vous devez sélectionner cette option pour empêcher le partage des entrées de la mémoire cache dont les variables sensibles à la sécurité ne correspondent pas.
Objet de variable de session. Pour les variables associées à la sécurité, dans la boîte de dialogue Variable de session, sélectionnez Prendre en compte la sécurité pour les identifier comme sensibles à la sécurité lors de l'utilisation d'une stratégie de sécurité de base de données au niveau de la rangée. Cette option garantit que les entrées de la mémoire cache sont marquées avec des variables sensibles à la sécurité, ce qui permet leur mise en correspondance pour toutes les interrogations entrantes.
Pour optimiser les présences potentielles dans la mémoire cache, une stratégie consiste à exécuter une série d'interrogations pour alimenter la mémoire cache.
Ci-dessous se trouvent quelques recommandations ayant trait aux types d'interrogation à utiliser lors de la création d'une série d'interrogations avec laquelle prédéfinir la mémoire cache.
Interrogations prédéfinies communes. Les interrogations qui sont exécutées couramment, notamment celles dont le traitement est cher, représentent d'excellentes interrogations pour prédéfinir la mémoire cache. Les interrogations dont les résultats sont intégrés dans des tableaux de bord sont de bons exemples d'interrogations communes.
Listes SELECT sans expression. L'élimination des expressions des colonnes de la liste SELECT
développe la possibilité de présences dans la mémoire cache. Une colonne mise en mémoire cache avec une expression peut seulement répondre à une nouvelle interrogation avec la même expression; une colonne mise en mémoire cache sans expression peut répondre à une demande pour cette colonne avec n'importe quelle expression. Par exemple, une demande mise en mémoire cache telle que :
SELECT QUANTITY, REVENUE...
peut répondre à une nouvelle interrogation telle que :
SELECT QUANTITY/REVENUE...
mais non l'inverse.
Aucune clause WHERE. Si un résultat mis en mémoire cache ne comporte pas de clause WHERE
, il peut être utilisé pour répondre à des interrogations qui satisfont aux règles de présence dans la mémoire cache pour la liste de sélection avec toute clause WHERE
incluant des colonnes dans la liste de projection.
En général, les meilleures interrogations avec lesquelles prédéfinir la mémoire cache sont des interrogations qui consomment un grand nombre de ressources de traitement de la base de données et qui seront probablement réémises. Faites attention de ne pas prédéfinir la mémoire cache avec de simples interrogations qui retournent de nombreuses rangées. Ces interrogations (par exemple, SELECT * FROM PRODUCTS
, où PRODUCTS
est mappé directement à une seule table de la base de données) nécessitent très peu de traitement pour la base de données. Le réseau et les frais généraux en représentent les principaux frais et la mise en mémoire cache ne permet pas d'améliorer ces facteurs.
Quand Oracle Analytics Cloud actualise les variables du modèle sémantique, il examine les modèles d'affaires pour déterminer s'ils référencent ces variables. Si c'est le cas, Oracle Analytics Cloud épure toute la mémoire cache de ces modèles d'affaires. Voir Incidence des modifications des modèles sémantiques sur la mémoire cache d'interrogation.
Vous pouvez configurer des agents pour prédéfinir la mémoire cache d'interrogation Oracle Analytics Cloud.
Prédéfinir la mémoire cache peut améliorer le temps de réponse pour les utilisateurs lorsqu'ils exécutent des analyses intégrées dans leurs tableaux de bord. Vous pouvez ainsi programmer des agents pour exécuter des demandes qui actualisent ces données.
La seule différence entre les agents de prédéfinition de la mémoire cache et les autres agents est qu'ils effacent automatiquement la mémoire cache précédente et n'apparaissent pas dans le tableau de bord comme alertes.
Note :
Les agents de prédéfinition de la mémoire cache éliminent seulement les interrogations avec correspondance exacte, des données périmées peuvent donc toujours exister. Assurez-vous que la stratégie de mise en mémoire cache comprend toujours l'épuration de la mémoire cache, car les interrogations d'agent ne traitent pas les interrogations ad hoc ni les forages.L'épuration de la mémoire cache supprime les entrées de la mémoire cache d'interrogation et permet au contenu de rester actualisé. Vous pouvez éliminer automatiquement les entrées de la mémoire cache de tables spécifiques en définissant le champ Durée de persistance de la mémoire cache pour chaque table dans l'outil d'administration de modèle.
Note :
Si vous utilisez le modélisateur sémantique, voir Quelles sont les propriétés générales d'une table physique?
Cette fonction est utile pour les sources de données qui sont fréquemment mises à jour. Par exemple, si une table stocke des données de bannière boursière qui sont mises à jour toutes les minutes, vous pouvez utiliser le paramètre Durée de persistance de la mémoire cache pour éliminer les entrées de cette table toutes les 59 secondes. Voir Mémoire cache et durée de persistance de la mémoire cache pour des tables physiques spécifiées.