Databuffer i en DAX-beregning

I denne opplæringen lærer du om hva databuffere gjør i en DAX-beregning. Du vil forstå hvordan de fungerer med formelen og lagringsmotorene for å gi svar på spørsmålene dine.

Innholdsfortegnelse

Hva er datacacher?

Lagringsmotoren samhandler med formelmotoren i form av en databuffer.

Hvis du husker fra tidligere blogginnlegg om DAX Query Structure, vil du vite at formelmotoren ber om data fra lagringsmotoren. Sistnevnte går deretter til databasen, henter forskjellige typer data, og returnerer den deretter tilbake til formelmotoren i form av en databuffer.

Lagringsmotoren kan gjøre enkel matematikk og aggregering som gjør den raskere. Den tilbyr også parallellitet som kan fylle flere databuffere samtidig. En lagringsmotorspørring kan ta tid å generere et svar. Men hvis du legger sammen alle de forskjellige lagringsmotorspørringene, vil ikke resultatene være de samme fordi den fyller mer enn én databuffer.

Formelmotoren, derimot, fungerer på komplekse søk. Siden det er en enkelt-trådet motor, kan den bare bruke én endelig konsolidert databuffer. Den begynner å jobbe på databufferen når alle forespørsler er fylt av lagringsmotoren.

Hvis formelmotorforespørselen er nøyaktig den samme som den forrige forespørselen, vil hurtigbufferen som tidligere ble returnert, brukes igjen. Lagringsmotoren er smart nok til å returnere den samme databufferen hvis den mottar samme forespørsel. Dette gjør DAXs ytelse raskere siden dataene allerede er bufret.

Når du kjører et mål, er det viktig å kjøre det mot en kald cache; unngå alltid å kjøre søkene dine i den varme hurtigbufferen. En varm cache betyr at lagringsmotorens databuffer allerede er dannet og klar til å returneres.

Hva er nøkkelfunksjonene?

Datacacher er tabeller materialisert i minnet som tar tid og spiser RAM. Husk alltid at materialiseringen skal være så lav som mulig.

En annen nøkkelfunksjon er at disse cachene er ukomprimerte . Når den kommer ut av lagringsmotoren og sendes til formelmotoren, blir databufferen en ukomprimert full tabell i minnet. Denne kjøringen er mye tregere enn en peer-lagringsmotorforespørsel som alt er i minnet og komprimert.

Det er ikke noe problem med å bruke formelmotoren; du trenger bare å få lagringsmotoren til å gjøre jobben så mye som mulig.

Datacacher er også midlertidige. De eksisterer en stund og så er de borte. Selv om de er materialisert i minnet, er de ikke vedvarende, så de vil bli ryddet ut.

Hvor finner jeg datacacher?

Du kan finne denne informasjonen i fysiske spørreplaner-postkolonnen og i DAX Studios servertiminger i rad-kolonnen . Det vil du vise hvor mange rader som produseres av lagringsmotoren og sendes til formelmotoren.

Hvis du kjører visse tester i servertimingene, vil du legge merke til at antallet rader kan være litt redusert. Dette er bare en veiledning for hvor mange rader du trekker opp.

Det viktigste å huske på med databuffere er at antall rader som materialiseres skal være lik antall rader som trengs for utdata så nært som mulig. Hvis det er stor forskjell i antall rader, betyr det at ordreoperasjonen er av.

Hvis mengden materialiserte rader er lik mengden rader som trengs for utdata, kalles det Late Materialization . Imidlertid, hvis antallet materialiserte rader er større enn antallet rader som trengs, kalles det tidlig materialisering . Siden dette er ukomprimerte data, bør du ikke la begge motorene materialisere dem fordi det vil bremse DAXs ytelse.

Dette er et eksempel på en tidlig materialisering:

Databuffer i en DAX-beregning

I den fysiske spørreplanen kan du se 25 millioner rader trekkes opp i postkolonnen. Eksempelspørringen trenger imidlertid ikke 25 millioner rader med utdata. Dette betyr at spørringen trakk for mange rader enn nødvendig.

Hvis du ser på servertimingene, vil du se samme mengde rader som trekkes i rad-kolonnen.

Databuffer i en DAX-beregning

I SE CPU- bildene vil du se et tall hvis det er parallelliteter i søkene dine. Siden dette eksemplet ikke har noen, viste det 0.

Databuffer i en DAX-beregning




Konklusjon

En saktegående DAX kan bety at søket trekker unødvendige cacher for at motorene dine skal fungere. Databuffere er ansvarlige for hastigheten og nøyaktigheten til din DAX fordi motorene jobber med dem for å generere svar for forskjellige forespørsler. For en raskere DAX-ytelse kan du løse dette problemet ved å bygge datamodellen og DAX-målene på riktig måte.


DAX Studio EVALUATE Nøkkelord: Grunnleggende eksempler

DAX Studio EVALUATE Nøkkelord: Grunnleggende eksempler

Lær å bruke DAX Studio EVALUATE nøkkelordet med grunnleggende eksempler og få en bedre forståelse av hvordan dette kan hjelpe deg med databehandling.

Opprette en datotabell i LuckyTemplates

Opprette en datotabell i LuckyTemplates

Finn ut hvorfor det er viktig å ha en dedikert datotabell i LuckyTemplates, og lær den raskeste og mest effektive måten å gjøre det på.

LuckyTemplates Mobile Reporting Tips og teknikker

LuckyTemplates Mobile Reporting Tips og teknikker

Denne korte opplæringen fremhever LuckyTemplates mobilrapporteringsfunksjon. Jeg skal vise deg hvordan du kan utvikle rapporter effektivt for mobil.

Profesjonelle tjenesteanalyserapporter i LuckyTemplates

Profesjonelle tjenesteanalyserapporter i LuckyTemplates

I denne LuckyTemplates-utstillingen vil vi gå gjennom rapporter som viser profesjonell tjenesteanalyse fra et firma som har flere kontrakter og kundeengasjementer.

Microsoft Power Platform-oppdateringer | Microsoft Ignite 2021

Microsoft Power Platform-oppdateringer | Microsoft Ignite 2021

Gå gjennom de viktigste oppdateringene for Power Apps og Power Automate og deres fordeler og implikasjoner for Microsoft Power Platform.

Vanlige SQL-funksjoner: en oversikt

Vanlige SQL-funksjoner: en oversikt

Oppdag noen vanlige SQL-funksjoner som vi kan bruke som streng, dato og noen avanserte funksjoner for å behandle eller manipulere data.

LuckyTemplates Template Creation: Guide og tips

LuckyTemplates Template Creation: Guide og tips

I denne opplæringen lærer du hvordan du lager din perfekte LuckyTemplates-mal som er konfigurert til dine behov og preferanser.

Feltparametre og små multipler i LuckyTemplates

Feltparametre og små multipler i LuckyTemplates

I denne bloggen vil vi demonstrere hvordan du legger feltparametere sammen med små multipler for å skape utrolig nyttig innsikt og grafikk.

LuckyTemplates-rangering og tilpasset gruppering

LuckyTemplates-rangering og tilpasset gruppering

I denne bloggen vil du lære hvordan du bruker LuckyTemplates rangering og tilpassede grupperingsfunksjoner for å segmentere et eksempeldata og rangere det i henhold til kriterier.

Viser kun kumulativ total opp til en bestemt dato i LuckyTemplates

Viser kun kumulativ total opp til en bestemt dato i LuckyTemplates

I denne opplæringen skal jeg dekke en spesifikk teknikk rundt hvordan du viser kumulativ total kun opp til en bestemt dato i grafikken i LuckyTemplates.