Partager via


Effacer les caches de Analysis Services

Analysis Services met en cache les données pour améliorer les performances des requêtes. Cette rubrique fournit des recommandations pour l’utilisation de la commande ClearCache XMLA pour effacer les caches créés en réponse à une requête MDX. Les effets de l’exécution de ClearCache varient selon que vous utilisez un modèle tabulaire ou multidimensionnel.

Quand effacer le cache pour les modèles multidimensionnels

Pour les bases de données multidimensionnelles, Analysis Services génère des caches dans le moteur de formule lors de l’évaluation d’un calcul et dans le moteur de stockage pour les résultats des requêtes de dimension et des requêtes de groupe de mesures. Les requêtes de groupe de mesures se produisent lorsque le moteur de formule a besoin de données de mesure pour une coordonnée de cellule ou un sous-cube. Les requêtes de dimension surviennent lors de l'interrogation de hiérarchies non naturelles et lors de l'application de l'autoexistence.

L’effacement du cache est recommandé lors du test de performances. En désactivant le cache entre les exécutions de test, vous vérifiez que la mise en cache n’asymétrie aucun résultat de test qui mesure l’impact d’une modification de conception de requête.

Quand effacer le cache pour les modèles tabulaires

Les modèles tabulaires sont généralement stockés en mémoire, où les agrégations et d’autres calculs sont effectués au moment où une requête est exécutée. Par conséquent, la commande ClearCache a un effet limité sur les modèles tabulaires. Pour un modèle tabulaire, les données peuvent être ajoutées aux caches Analysis Services si les requêtes MDX sont exécutées dessus. En particulier, les mesures DAX référencées par les opérations MDX et autoexists peuvent mettre en cache les résultats dans le cache de formule et le cache de dimension respectivement. Notez toutefois que les hiérarchies non naturelles et les requêtes de groupe de mesures ne cachent pas les résultats dans le moteur de stockage. En outre, il est important de reconnaître que les requêtes DAX ne mettent pas en cache les résultats dans les moteurs de formule et de stockage. Dans la mesure où les caches existent à la suite de requêtes MDX, l’exécution de ClearCache sur un modèle tabulaire invalide toutes les données mises en cache du système.

L’exécution de ClearCache efface également les caches en mémoire dans le moteur d’analytique en mémoire xVelocity (VertiPaq). Le moteur xVelocity conserve un petit ensemble de résultats mis en cache. L’exécution de ClearCache invalide ces caches dans le moteur xVelocity.

Enfin, l’exécution de ClearCache supprime également les données résiduelles qui sont laissées en mémoire lorsqu’un modèle tabulaire est reconfiguré pour DirectQuery le mode. Cela est particulièrement important si le modèle contient des données sensibles soumises à des contrôles stricts. Dans ce cas, l’exécution de ClearCache est une action de précaution que vous pouvez prendre pour vous assurer que les données sensibles existent uniquement là où vous vous attendez à ce qu’elles soient. L’effacement manuel du cache est nécessaire si vous utilisez Management Studio pour déployer le modèle et modifier le mode de requête. En revanche, l’utilisation de SQL Server Data Tools pour spécifier DirectQuery sur le modèle et les partitions efface automatiquement le cache lorsque vous basculez le modèle pour utiliser ce mode de requête.

Par rapport aux recommandations relatives à l’effacement des caches de modèles multidimensionnels pendant les tests de performances, il n’existe aucune recommandation générale pour effacer les caches de modèles tabulaires. Si vous ne gérez pas le déploiement d’un modèle tabulaire qui contient des données sensibles, il n’existe aucune tâche administrative spécifique qui appelle l’effacement du cache.

Effacer le cache des modèles Analysis Services

Pour effacer le cache, utilisez XMLA et SQL Server Management Studio. Vous pouvez effacer le cache au niveau de la base de données, du cube, de la dimension ou de la table ou du groupe de mesures. Les étapes suivantes pour effacer le cache au niveau de la base de données s’appliquent aux modèles multidimensionnels et aux modèles tabulaires.

Remarque

Des tests de performances rigoureux peuvent nécessiter une approche plus complète pour effacer le cache. Pour obtenir des instructions sur la vidage des caches Analysis Services et du système de fichiers, consultez la section sur l’effacement des caches dans le Guide des opérations SQL Server 2008 R2 Analysis Services.

Pour les modèles multidimensionnels et tabulaires, l’effacement de certains de ces caches peut être un processus en deux étapes qui consiste à invalider le cache lors de l’exécution de ClearCache, puis à vider le cache lors de la réception de la requête suivante. Une réduction de la consommation de mémoire n’est évidente qu’une fois le cache vidé.

L’effacement du cache nécessite que vous fournissiez un identificateur d’objet à l’instruction ClearCache dans une requête XMLA. La première étape de cette rubrique explique comment obtenir un identificateur d’objet.

Étape 1 : Obtenir l’identificateur d’objet

  1. Dans Management Studio, cliquez avec le bouton droit sur un objet, sélectionnez Propriétés et copiez la valeur dans la propriété ID dans le volet Propriétés . Cette approche fonctionne pour la base de données, le cube, la dimension ou la table.

  2. Pour obtenir l’ID du groupe de mesures, cliquez avec le bouton droit sur le groupe de mesures et sélectionnez Script Measure Group As. Choisissez Créer ou modifier, puis envoyez la requête à une fenêtre. L’ID du groupe de mesures est visible dans la définition de l’objet. Copiez l’ID de la définition d’objet.

Étape 2 : Exécuter la requête

  1. Dans Management Studio, cliquez avec le bouton droit sur une base de données, pointez sur Nouvelle requête, puis sélectionnez XMLA.

  2. Copiez l’exemple de code suivant dans la fenêtre de requête XMLA. Changez DatabaseID pour l’ID du base de données sur la connexion actuelle.

    <ClearCache xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">  
      <Object>  
        <DatabaseID> Adventure Works DW Multidimensional</DatabaseID>  
      </Object>  
    </ClearCache>  
    
    

    Vous pouvez également spécifier un chemin d’accès d’un objet enfant, tel qu’un groupe de mesures, pour effacer le cache de cet objet uniquement.

    <ClearCache xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">  
      <Object>  
        <DatabaseID>Adventure Works DW Multidimensional</DatabaseID>  
            <CubeID>Adventure Works</CubeID>  
            <MeasureGroupID>Fact Currency Rate</MeasureGroupID>  
      </Object>  
    </ClearCache>  
    
  3. Appuyez sur F5 pour exécuter la requête. Le résultat suivant devrait s’afficher :

    <return xmlns="urn:schemas-microsoft-com:xml-analysis">  
      <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" />  
    </return>  
    

Voir aussi

Script de tâches d’administration dans Analysis Services
Surveiller une instance Analysis Services