Partage via


Mise en cache des requêtes

La mise en cache est une technique essentielle pour améliorer les performances des systèmes d’entrepôt de données sans avoir à recalculer ou récupérer les mêmes données plusieurs fois. Dans Databricks SQL, la mise en cache peut accélérer considérablement l’exécution des requêtes et réduire l’utilisation de l’entrepôt, ce qui réduit les coûts et permet une utilisation plus efficace des ressources. Chaque couche de mise en cache améliore les performances des requêtes, réduit l’utilisation du cluster et optimise l’utilisation des ressources pour simplifier l’expérience de l’entrepôt de données.

La mise en cache offre de nombreux avantages dans les entrepôts de données, notamment :

  • Vitesse : en stockant les résultats de requête ou les données fréquemment consultées dans la mémoire ou dans d’autres supports de stockage rapides, la mise en cache peut réduire considérablement le temps d’exécution des requêtes. Ce stockage est particulièrement utile pour les requêtes répétitives, car le système peut rapidement récupérer les résultats mis en cache au lieu de les recalculer.
  • Réduction de l’utilisation du cluster : la mise en cache évite d’utiliser des ressources de calcul supplémentaires en réutilisant les résultats précédemment calculés. Cela réduit la durée de fonctionnement générale de l’entrepôt et la demande de clusters de calcul supplémentaires, ce qui permet une diminution des coûts et une meilleure allocation des ressources.

Types de caches de requêtes dans Databricks SQL

Databricks SQL effectue plusieurs types de mise en cache des requêtes.

caches de requêtes

  • Cache de l’interface utilisateur Databricks SQL : mise en cache par utilisateur de l’ensemble des résultats de requête et de tableau de bord dans l’interface utilisateur Databricks SQL. Quand les utilisateurs ouvrent un tableau de bord ou une requête SQL pour la première fois, le cache de l’interface utilisateur Databricks SQL affiche le résultat de requête le plus récent, y compris les résultats des exécutions planifiées.

    Le cache de l’interface utilisateur Databricks SQL a un cycle de vie de 7 jours maximum. Le cache se trouve dans le système de fichiers Azure Databricks dans votre compte. Vous pouvez supprimer les résultats d’une requête en réexécutant la requête que vous ne souhaitez plus stocker. Une fois la requête réexécutée, ses anciens résultats sont supprimés du cache. Par ailleurs, le cache n’est plus valide quand les tables sous-jacentes sont mises à jour.

  • Cache des résultats : mise en cache par cluster des résultats de toutes les requêtes effectuées avec des entrepôts SQL. La mise en cache des résultats comprend des caches de résultats locaux et distants, qui fonctionnent conjointement pour améliorer les performances des requêtes en stockant les résultats des requêtes dans la mémoire ou sur des médias de stockage distants.

    • Cache local : le cache local est un cache en mémoire qui stocke les résultats des requêtes pendant la durée de vie du cluster ou jusqu’à ce que le cache soit saturé, selon ce qui arrive en premier. Ce cache est utile pour accélérer les requêtes répétitives et évite de recalculer les mêmes résultats. En revanche, quand le cluster est arrêté ou redémarré, le cache est nettoyé et tous les résultats de requêtes sont supprimés.
    • Cache de résultats distant : le cache de résultats distant est un système de cache serverless uniquement qui conserve les résultats des requêtes de façon persistante en tant que données du système de l’espace de travail. Par conséquent, ce cache n’est pas invalidé par l’arrêt ou le redémarrage d’un entrepôt SQL. Le cache des résultats distants remédie à un inconvénient courant de la mise en cache des résultats de requête en mémoire, à savoir que les résultats restent disponibles uniquement pendant le temps d’exécution des ressources de calcul. Le cache distant est un cache persistant partagé entre tous les entrepôts d’un espace de travail Databricks.

    L’accès au résultat du cache distant nécessite un entrepôt actif. Pendant le traitement d’une requête, le cluster recherche d’abord dans son cache local avant de regarder dans le cache distant, si nécessaire. La requête est exécutée uniquement si le résultat de la requête est mis en cache dans aucun des cache. Le cache local et le cache distant ont un cycle de vie de 24 heures, qui commence à l’entrée du cache. Le cache de résultats distants persiste par le biais de l’arrêt ou du redémarrage d’un entrepôt SQL. Les deux caches sont invalidés lorsque les tables sous-jacentes sont mises à jour.

    Le cache de résultats distant est disponible pour les requêtes qui utilisent des clients ODBC/JDBC et l’API d’instruction SQL.

    Pour désactiver la mise en cache des résultats de requête, vous pouvez exécuter SET use_cached_result = false dans l’éditeur SQL.

    Important

    Vous ne devrez utiliser cette option qu’à des fins de test ou d’évaluation.

  • Cache de disque : mise en cache sur un SDD local des données lues à partir d’un stockage de données dans le cadre des requêtes effectuées avec des entrepôts SQL. Le cache de disque est conçu pour améliorer les performances des requêtes en stockant les données sur le disque, ce qui permet d’accélérer la lecture des données. Les données sont automatiquement mises en cache pendant l’extraction des fichiers, en utilisant un format intermédiaire rapide. En stockant des copies des fichiers sur le stockage local attaché aux nœuds de calcul, le cache de disque rapproche les données des travailleurs, ce qui améliore les performances des requêtes. Consultez Optimisation des performances avec la mise en cache sur Azure Databricks.

En plus de sa fonction principale, le cache de disque détecte automatiquement les changements des fichiers de données sous-jacents. Lorsqu’il détecte des modifications, le cache est invalidé. Le cache de disque partage les mêmes caractéristiques de cycle de vie que le cache de résultats local. Cela signifie que quand le cluster est arrêté ou redémarré, le cache est nettoyé et doit être rempli à nouveau.

La mise en cache des résultats de requêtes et le cache de disque affectent les requêtes dans l’interface utilisateur Databricks SQL et les clients BI et autres clients externes.