Caching in Fabric-datawarehousing
Van toepassing op:✅ SQL Analytics-eindpunt en -magazijn in Microsoft Fabric
Het ophalen van gegevens uit de Data Lake is een cruciale io-bewerking (input/output) met aanzienlijke gevolgen voor queryprestaties. In Microsoft Fabric maakt Synapse Data Warehouse gebruik van verfijnde toegangspatronen om gegevensleesbewerkingen uit opslag te verbeteren en de uitvoeringssnelheid van query's te verhogen. Daarnaast minimaliseert het op intelligente wijze de noodzaak van leesbewerkingen voor externe opslag door gebruik te maken van lokale caches.
Caching is een techniek die de prestaties van gegevensverwerkingstoepassingen verbetert door de IO-bewerkingen te verminderen. In cache worden vaak gebruikte gegevens en metagegevens opgeslagen in een snellere opslaglaag, zoals lokaal geheugen of lokale SSD-schijf, zodat volgende aanvragen sneller kunnen worden verwerkt, rechtstreeks vanuit de cache. Als een bepaalde set gegevens eerder door een query is geopend, worden deze gegevens rechtstreeks opgehaald uit de cache in het geheugen. Deze aanpak vermindert de IO-latentie aanzienlijk, omdat lokale geheugenbewerkingen met name sneller zijn in vergelijking met het ophalen van gegevens uit externe opslag.
Caching is volledig transparant voor de gebruiker. Ongeacht de oorsprong, of het nu een magazijntabel, een OneLake-snelkoppeling of zelfs OneLake-snelkoppeling is die verwijst naar niet-Azure-services, slaat de query alle gegevens op die worden geopend in de cache.
Er zijn twee typen caches die verderop in dit artikel worden beschreven:
- Geheugencache
- Schijfcache
Geheugencache
Wanneer de query gegevens uit de opslag opent en ophaalt, voert het een transformatieproces uit waarmee de gegevens worden getranscodeerd uit de oorspronkelijke indeling op basis van bestanden in sterk geoptimaliseerde structuren in de cache in het geheugen.
Gegevens in de cache zijn ingedeeld in een gecomprimeerde kolomindeling die is geoptimaliseerd voor analytische query's. Elke kolom met gegevens wordt samen opgeslagen, gescheiden van de andere, waardoor vergelijkbare gegevenswaarden samen worden opgeslagen, wat leidt tot een verminderde geheugenvoetafdruk. Wanneer query's bewerkingen moeten uitvoeren op een specifieke kolom, zoals aggregaties of filteren, kan de engine efficiënter werken, omdat deze geen onnodige gegevens uit andere kolommen hoeft te verwerken.
Bovendien is deze kolomopslag ook verleidelijk voor parallelle verwerking, waardoor de uitvoering van query's voor grote gegevenssets aanzienlijk kan worden versneld. De engine kan bewerkingen uitvoeren op meerdere kolommen tegelijk, waarbij gebruik wordt gemaakt van moderne multi-core processors.
Deze aanpak is met name nuttig voor analytische workloads waarbij query's grote hoeveelheden gegevens moeten scannen om aggregaties, filters en andere gegevensbewerkingen uit te voeren.
Schijfcache
Bepaalde gegevenssets zijn te groot om te worden ondergebracht in een cache in het geheugen. Om snelle queryprestaties voor deze gegevenssets te ondersteunen, maakt Warehouse gebruik van schijfruimte als een aanvullende extensie voor de cache in het geheugen. Alle informatie die in de cache in het geheugen wordt geladen, wordt ook geserialiseerd naar de SSD-cache.
Aangezien de cache in het geheugen een kleinere capaciteit heeft in vergelijking met de SSD-cache, blijven gegevens die uit de cache in het geheugen worden verwijderd, gedurende langere tijd binnen de SSD-cache. Wanneer de volgende query deze gegevens aanvraagt, wordt deze met een aanzienlijk snellere snelheid opgehaald uit de SSD-cache in de cache in het geheugen dan wanneer deze wordt opgehaald uit externe opslag, waardoor u uiteindelijk consistentere queryprestaties krijgt.
Cachebeheer
Caching blijft consistent actief en werkt naadloos op de achtergrond, zonder tussenkomst van uw kant. Het uitschakelen van caching is niet nodig, omdat dit onvermijdelijk leidt tot een merkbare verslechtering van de queryprestaties.
Het cachemechanisme wordt georganiseerd en ondersteund door de Microsoft Fabric zelf en biedt gebruikers niet de mogelijkheid om de cache handmatig te wissen.
De volledige transactionele consistentie van de cache zorgt ervoor dat wijzigingen in de gegevens in de opslag, zoals via DML-bewerkingen (Data Manipulation Language), nadat deze in eerste instantie in de cache in het geheugen zijn geladen, resulteren in consistente gegevens.
Wanneer de capaciteitsdrempel voor de cache wordt bereikt en nieuwe gegevens voor het eerst worden gelezen, worden objecten die voor de langste duur ongebruikt zijn gebleven, uit de cache verwijderd. Dit proces wordt uitgevoerd om ruimte te creëren voor de instroom van nieuwe gegevens en het onderhouden van een optimale strategie voor cachegebruik.