Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvorfor kan SOQL -spørsmål løpe raskere i et sandkassemiljø


Hvorfor kan SOQL -spørsmål løpe raskere i et sandkassemiljø


SOQL (Salesforce Object Query Language) Spørsmål kan noen ganger løpe raskere i et sandkassemiljø sammenlignet med et produksjonsmiljø på grunn av flere tekniske og operasjonelle faktorer iboende for hvordan Salesforce sandkasser er satt opp og administrert. Å forstå disse faktorene krever å fordype seg i forskjeller i datamengder, indeksering, hurtigbufring, ressurskonkurranse og systemoptimaliseringer som er spesifikke for sandkasse kontra produksjonsmiljøer.

Datavolum og kompleksitet

En av de viktigste grunnene til at SOQL -spørsmål kjører raskere i sandkassemiljøer er forskjellen i datavolum. Sandkasser har vanligvis mindre datasett enn produksjonsmiljøer, spesielt hvis de er delvis eller utvikler sandkasser, som bare kopierer en delmengde av produksjonsdataene. Dette reduserte datavolumet betyr at færre poster må skannes, indekseres og returneres av spørsmål, og naturlig fremskynder utførelsestider for spørringen. Selv i full sandkasser som speiler produksjonsdata, kan hyppige forfriskninger eller øyeblikksbilder bety at dataene ikke er så omfangsrike eller så ofte tilgang som i live -produksjonsorganisasjonen, noe som resulterer i bedre ytelse på grunn av lavere total systembelastning.

indeksering og selektivitet

Salesforce's Query Optimizer er veldig avhengig av indekser for å fremskynde utførelsen av spørringen. Spørsmål som filtrerer på indekserte felt er ofte mye raskere fordi Salesforce raskt kan begrense resultatsettet i stedet for å skanne hele bordet. I sandkassemiljøer kan spørringsoptimisatoren oppføre seg mer effektivt fordi datadistribusjonen kan være annerledes, slik at indeksene kan være mer selektive. For eksempel, hvis en sandkasse har færre duplikat- eller nullverdier i visse indekserte felt enn produksjon, kan spørringsoptimisatoren bruke indekser mer effektivt for å utføre spørsmål raskere. Dessuten tillater sandkassemiljøer ofte mer fleksibilitet i å eksperimentere med tilpassede indekser eller spørringsinnstilling uten å påvirke produksjonen, noe som kan optimalisere SOQL -ytelse under utvikling og testing.

Redusert strid og ressursisolasjon

Produksjonsmiljøer er multi-leietaker og tungt brukt av sluttbrukere som utfører forskjellige operasjoner samtidig, og skaper ressurskonkurranse. Denne påstanden kan redusere utførelsen av spørringen som CPU, minne og I/O deles mellom mange samtidige prosesser. Derimot har sandkasser, spesielt utvikler og utvikler Pro Sandboxes, en tendens til å ha færre samtidige brukere og lavere generell systembelastning. Denne reduksjonen i etterspørsel etter prosessering betyr at spørsmål kan få tilgang til ressurser lettere, redusere ventetidene og få fart på utførelsen.

Cache og spørringsplanstabilitet

Salesforce benytter sofistikerte spørringsmekanismer for å forbedre ytelsen. I sandkassemiljøer kan visse spørresultater og utførelsesplaner hurtigbufret, spesielt hvis gjentatte tester eller utviklings iterasjoner utfører de samme spørsmålene. Denne hurtigbufringseffekten kan fremskynde spørringsytelsen på påfølgende løp. Fordi sandkassedata endres sjeldnere enn produksjonen, forblir de hurtige spørringsplanene og resultatene gyldige lengre, noe som forbedrer spørringseffektiviteten. Produksjonsmiljøer, med sine dynamiske og kontinuerlige dataendringer og tung transaksjonsaktivitet, kan ikke utnytte hurtigbufring så effektivt, noe som fører til hyppigere rekompilering av spørringsplaner og dermed tregere spørringsytelse.

Governor Limits and Execution Context

Salesforce pålegger guvernørgrensene inkludert det maksimale antallet SOQL -spørsmål per transaksjon for å opprettholde plattformstabilitet. I utviklingssandkasser konfigurerer utviklere ofte og kontrollerer utførelseskontekster mer nøye for å unngå å treffe disse grensene, for eksempel ved å bulkifiserende spørsmål og behandle data i partier. Denne oppmerksomhetsutviklingen og testingen hjelper til med å holde spørsmål optimalisert før utplassering til produksjon. I produksjon kan komplekse forretningsprosesser og integrasjoner utilsiktet forårsake overdreven eller ineffektiv spørsmål, noe som fører til langsommere ytelse på grunn av gjentatte databasetreff og treffer guvernørgrenser. Sandkasser gir et tryggere rom for å feilsøke og optimalisere disse spørsmålene, og gir bedre relativ ytelse.

Forskjeller i delingsregler og sikkerhetsinnstillinger

Sandkassemiljøer kan ha forenklet eller forskjellige delingsregler og sikkerhetskonfigurasjoner sammenlignet med produksjonen. Salesforce håndhever delings- og synlighetsregler på databasenivå under utførelse av spørring. Komplekse deling av beregninger i produksjonen kan gi overhead til spørsmål, spesielt de som er relatert til objekt og sikkerhetsnivå. Sandkasser som brukes til utvikling eller testing løfter eller forenkler disse reglene noen ganger, reduserer utførelseskompleksiteten og dermed fremskynder SOQL -spørringsytelsen.

Testing og optimaliseringsfokus

I sandkassemiljøer er det generelt fokus på testing og optimalisering. Utviklere og administratorer profilerer, analyserer og forbedrer SOQL -spørsmål ved hjelp av Salesforce -verktøy som spørringsplanverktøyet, utviklerkonsollens ytelseslogger og feilsøkingslogger. Følgelig er den beste fremgangsmåten som ble lært under sandkasseutvikling, for eksempel å velge nødvendige felt, bruke selektive filtre, unngå løkker med spørsmål inni seg, bruke relasjoner og aggregater ettertenksomt, og asynkron prosessering (som batch -spiss) Â implementeres, noe som resulterer i raskere spørsmål. Produksjonsmiljøer kan fremdeles inneholde arv eller uoptimaliserte spørsmål som forringer ytelsen.

Andre medvirkende faktorer

- Data Skew: Produksjonsdata har ofte skjevt distribusjoner, der en liten delmengde av poster dominerer datasettet. Denne skjevheten kan nedbryte spørringsytelsen ved å beseire indekseringsstrategier. Sandkasser kan ha mindre skjevhet, noe som muliggjør mer effektive spørsmål.

- Vakuum og papirkurv tilstand: Slettede poster i papirkurven kan påvirke ytelsen. Produksjonsorganisasjoner har ofte en fyldigere papirkurv enn sandkasser, noe som kan bremse SOQL -spørsmål som får tilgang til relaterte objekter eller historier.

- Replikering Lag and Query Statistics: Salesforce's Query Optimizer er avhengig av forhåndsbestemt statistikk som blir oppdatert med jevne mellomrom. Sandkasser, spesielt nylig oppdaterte, kan ha fersk statistikk som lar optimisatoren velge bedre spørringsplaner.

- Plattformforbedringer: Noen ganger distribuerer Salesforce nye ytelsesforbedringer og funksjoner først i sandkasser for tidlig testing. Dette kan midlertidig forbedre sandkasseytelsen i forhold til eldre produksjonsmiljøer.

Oppsummert kjører SOQL -spørsmål raskere i sandkassemiljøer hovedsakelig på grunn av mindre og mindre komplekse datasett, bedre indeksselektivitet, redusert systemkonkurranse, effektiv hurtigbufring, fokusert spørringsoptimalisering under utvikling og enklere sikkerhets- og delingskonfigurasjoner. Disse kombinerte faktorene skaper forhold der Salesforce's Query Optimizer kan utføre spørsmål mer effektivt og hvor ressursene er lettere tilgjengelige for behandling av spørsmål. Dette miljøet fremmer bedre ytelse uoppnåelig i den sterkt belastede og komplekse naturen til produksjonsorganisasjoner. Sandkasser fungerer dermed som både en utvikling/testing lekeplass og et sted for ytelsesinnstilling før du distribuerer spørsmål og applikasjoner i produksjon der ytelseskrav og datakompleksiteter er mye høyere. All denne innsikten er hentet fra Salesforce Performance Best Practices, Developer Experience og Salesforce's Architecture Egenskaper.