Delen via


Query's opslaan in cache

Caching is een essentiële techniek voor het verbeteren van de prestaties van datawarehouse-systemen door te voorkomen dat dezelfde gegevens meerdere keren opnieuw moeten worden gecomputeerd of opgehaald. In Databricks SQL kan caching de uitvoering van query's aanzienlijk versnellen en het magazijngebruik minimaliseren, wat resulteert in lagere kosten en efficiënter resourcegebruik. Elke cachelaag verbetert de queryprestaties, minimaliseert het clustergebruik en optimaliseert het resourcegebruik voor een naadloze datawarehouse-ervaring.

Caching biedt tal van voordelen in datawarehouses, waaronder:

  • Snelheid: Door queryresultaten of veelgebruikte gegevens op te slaan in het geheugen of andere snelle opslagmedia, kan caching de uitvoeringstijden van query's aanzienlijk verminderen. Deze opslag is met name nuttig voor terugkerende query's, omdat het systeem snel de resultaten in de cache kan ophalen in plaats van ze opnieuw te compileren.
  • Verminderd clustergebruik: caching minimaliseert de noodzaak van extra rekenresources door eerder berekende resultaten opnieuw te gebruiken. Dit vermindert de totale uptime van het magazijn en de vraag naar extra rekenclusters, wat leidt tot kostenbesparingen en betere resourcetoewijzing.

Typen querycaches in Databricks SQL

Databricks SQL voert verschillende typen querycaching uit.

querycaches

  • Databricks SQL UI cache: per gebruiker caching van alle query's en dashboards resulteert in de Databricks SQL UI. Wanneer gebruikers voor het eerst een dashboard of SQL-query openen, geeft de Databricks SQL UI-cache het meest recente queryresultaat weer, inclusief de resultaten van geplande uitvoeringen.

    De Databricks SQL UI-cache heeft maximaal een levenscyclus van zeven dagen. De cache bevindt zich in uw Azure Databricks-bestandssysteem in uw account. U kunt queryresultaten verwijderen door de query die u niet meer wilt opslaan opnieuw uit te voeren. Zodra de query opnieuw is uitgevoerd, worden de oude queryresultaten uit de cache verwijderd. Bovendien wordt de cache ongeldig nadat de onderliggende tabellen zijn bijgewerkt.

  • Resultaatcache: per clustercache van queryresultaten voor alle query's via SQL-warehouses. Het opslaan van resultatencaches omvat zowel lokale als externe resultatencaches, die samenwerken om de queryprestaties te verbeteren door queryresultaten op te slaan in geheugen- of externe opslagmedia.

    • Lokale cache: de lokale cache is een cache in het geheugen waarin queryresultaten worden opgeslagen voor de levensduur van het cluster of totdat de cache vol is, afhankelijk van wat het eerst gebeurt. Deze cache is handig voor het versnellen van terugkerende query's, waardoor dezelfde resultaten niet opnieuw hoeven te worden gecomputeerd. Zodra het cluster is gestopt of opnieuw is opgestart, wordt de cache echter opgeschoond en worden alle queryresultaten verwijderd.
    • Cache voor externe resultaten: de cache met externe resultaten is een serverloos cachesysteem dat queryresultaten behoudt door deze als systeemgegevens van de werkruimte te behouden. Als gevolg hiervan wordt deze cache niet ongeldig gemaakt door het stoppen of opnieuw opstarten van een SQL Warehouse. De cache met externe resultaten heeft betrekking op een veelvoorkomend pijnpunt in het opslaan van queryresultaten in het geheugen, dat alleen beschikbaar blijft zolang de rekenresources worden uitgevoerd. De externe cache is een permanente gedeelde cache in alle magazijnen in een Databricks-werkruimte.

    Voor toegang tot de cache voor externe resultaten is een actief magazijn vereist. Bij het verwerken van een query zoekt een cluster eerst in de lokale cache en zoekt het vervolgens indien nodig in de externe resultatencache. Alleen als het queryresultaat niet in de cache wordt opgeslagen, wordt de query uitgevoerd. Zowel de lokale als de externe caches hebben een levenscyclus van 24 uur, die begint bij het invoeren van de cache. De cache met externe resultaten blijft behouden tijdens het stoppen of opnieuw opstarten van een SQL-warehouse. Beide caches worden ongeldig wanneer de onderliggende tabellen worden bijgewerkt.

    De cache voor externe resultaten is beschikbaar voor query's met behulp van ODBC-/JDBC-clients en DE SQL-instructie-API.

    Als u het opslaan van queryresultaten wilt uitschakelen, kunt u deze uitvoeren SET use_cached_result = false in de SQL-editor.

    Belangrijk

    Gebruik deze optie alleen bij het testen of benchmarken.

  • Schijfcache: lokale SSD-cache voor gegevens die worden gelezen uit gegevensopslag voor query's via SQL-warehouses. De schijfcache is ontworpen om de queryprestaties te verbeteren door gegevens op schijf op te slaan, zodat gegevens sneller kunnen worden gelezen. Gegevens worden automatisch in de cache opgeslagen wanneer bestanden worden opgehaald, met behulp van een snelle tussenliggende indeling. Door kopieën van de bestanden op te slaan in de lokale opslag die is gekoppeld aan rekenknooppunten, zorgt de schijfcache ervoor dat de gegevens zich dichter bij de werkrollen bevinden, wat resulteert in verbeterde queryprestaties. Zie Prestaties optimaliseren met caching in Azure Databricks.

Naast de primaire functie detecteert de schijfcache automatisch wijzigingen in de onderliggende gegevensbestanden. Wanneer wijzigingen worden gedetecteerd, wordt de cache ongeldig gemaakt. De schijfcache deelt dezelfde levenscycluskenmerken als de lokale resultaatcache. Dit betekent dat wanneer het cluster wordt gestopt of opnieuw wordt opgestart, de cache wordt opgeschoond en opnieuw moet worden ingevuld.

De queryresultaten in de cache en schijfcache zijn van invloed op query's in de SQL-gebruikersinterface van Databricks en BI en andere externe clients.