Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Varför kan SOQL -frågor löper snabbare i en sandlådemiljö


Varför kan SOQL -frågor löper snabbare i en sandlådemiljö


SOQL (Salesforce Object Query Language) Frågor kan ibland köras snabbare i en sandlådmiljö jämfört med en produktionsmiljö på grund av flera tekniska och operativa faktorer som är inneboende för hur Salesforce sandlådor ställs in och hanteras. Att förstå dessa faktorer krävs att du ska gå in i skillnader i datavolymer, indexering, cachning, resursstrid och systemoptimeringar som är specifika för Sandbox kontra produktionsmiljöer.

Datavolym och komplexitet

En av de främsta orsakerna till att SOQL -frågor körs snabbare i sandlådmiljöer är skillnaden i datavolym. Sandlådor har vanligtvis mindre datasätt än produktionsmiljöer, särskilt om de är partiella eller utvecklar sandlådor, som bara kopierar en delmängd av produktionsdata. Denna minskade datavolym innebär att färre poster måste skannas, indexeras och returneras av frågor, naturligtvis påskynda frågeställningstiderna för frågan. Även i fullständiga sandlådor som speglar produktionsdata, kan ofta uppdateringar eller ögonblicksbilder innebära att data inte är lika omfattande eller så ofta åtkomst som i liveproduktionens org, vilket resulterar i bättre prestanda på grund av lägre totala systembelastning.

Indexering och selektivitet

Salesforces Query Optimizer förlitar sig starkt på index för att påskynda frågeställningen. Frågor som filtrerar på indexerade fält är ofta mycket snabbare eftersom Salesforce snabbt kan begränsa resultatuppsättningen snarare än att skanna hela tabellen. I sandlådmiljöer kan frågeformatorn bete sig mer effektivt eftersom datadistributionen kan vara annorlunda, vilket gör att index kan vara mer selektiva. Till exempel, om en sandlåda har färre duplikat- eller nollvärden i vissa indexerade fält än produktion, kan frågeformatorn använda index mer effektivt för att utföra frågor snabbare. Dessutom möjliggör sandlådmiljöer ofta mer flexibilitet när det gäller att experimentera med anpassade index eller frågeställning utan att påverka produktionen, vilket kan optimera SOQL -prestanda under utveckling och testning.

reducerad strid och resursisolering

Produktionsmiljöer används flera hyresgäster och används starkt av slutanvändare som utför olika verksamheter samtidigt, vilket skapar resursstrid. Denna påstående kan bromsa frågeställningen som CPU, minne och I/O delas mellan många samtidiga processer. Däremot tenderar sandlådor, särskilt utvecklare och utvecklare Pro Sandboxes, att ha färre samtidiga användare och lägre övergripande systembelastning. Denna minskning av samtidiga behandlingsbehov innebär att frågor kan få tillgång till resurser lättare, minska väntetiderna och påskynda genomförandet.

Cache och frågesstabilitet

Salesforce använder sofistikerade frågeformiga mekanismer för att förbättra prestandan. I sandlådmiljöer kan vissa frågeställningar och exekveringsplaner cachas, särskilt om upprepade tester eller utvecklings iterationer kör samma frågor. Denna cacheffekt kan påskynda frågeställningen på efterföljande körningar. Eftersom sandlåddata förändras mindre ofta än produktionen förblir dessutom de cachade frågeställningarna och resultaten giltiga, vilket förbättrar frågeffektiviteten. Produktionsmiljöer, med sina dynamiska och kontinuerliga dataförändringar och tung transaktionsaktivitet, kan inte utnyttja caching lika effektivt, vilket leder till mer ofta ersättning av frågetplaner och därmed långsammare frågeställning.

Guvernörsgränser och exekveringssammanhang

Salesforce sätter guvernörsgränser, inklusive det maximala antalet SOQL -frågor per transaktion ”för att upprätthålla plattformsstabilitet. I utveckling av sandlådor konfigurerar och kontrollerar utvecklare ofta mer noggrant för att undvika att träffa dessa gränser, till exempel genom att bulkifyera frågor och bearbeta data i partier. Denna medvetna utveckling och testning hjälper till att hålla frågor optimerade innan du distribuerar till produktion. I produktionen kan komplexa affärsprocesser och integrationer oavsiktligt orsaka överdriven eller ineffektiv fråga, vilket kan leda till långsammare prestanda på grund av upprepade databashits och träffa guvernörsgränser. Sandlådor ger ett säkrare utrymme för att felsöka och optimera dessa frågor, vilket ger bättre relativ prestanda.

Skillnader i delning av regler och säkerhetsinställningar

Sandboxmiljöer kan ha förenklat eller olika delningsregler och säkerhetskonfigurationer jämfört med produktion. Salesforce verkställer delning och synlighetsregler på databasnivån under exekveringen av frågan. Komplexa delningsberäkningar i produktionen kan lägga till omkostnader till frågor, särskilt de som är relaterade till objekt och rekordnivå säkerhet. Sandlådor som används för utveckling eller testning lyfter eller förenklar ibland dessa regler, minskar exekveringskomplexiteten och därmed påskyndar SOQL -frågeställningen.

Testning och optimeringsfokus

I sandlådmiljöer är det i allmänhet ett fokus på testning och optimering. Utvecklare och administratörer profilerar, analyserar och förbättrar SOQL -frågor aktivt med hjälp av Salesforce -verktyg som Query Plan -verktyget, Developer Consoles prestandaloggar och felsökningsloggar. Följaktligen är de bästa metoderna som lärt sig under Sandbox -utvecklingen såsom att bara välja nödvändiga fält, tillämpa selektiva filter, att undvika slingor med frågor inuti dem, använda relationer och aggregat eftertänksamt och asynkron bearbetning (som batchpex) implementeras, vilket resulterar i snabbare frågor. Produktionsmiljöer kan fortfarande innehålla arv eller ooptimerade frågor som försämrar prestanda.

Andra bidragande faktorer

- Data Skew: Produktionsdata har ofta snedställda distributioner, där en liten delmängd av poster dominerar datasättet. Denna skev kan försämra frågeställningen genom att besegra indexeringsstrategier. Sandlådor kan ha mindre skev, vilket möjliggör effektivare frågor.

- Vakuum och återvinnfackstillstånd: Raderade poster i papperskorgen kan påverka prestandan. Produktionsorganen har vanligtvis en fylligare återvinningsfack än sandlådor, som kan bromsa SOQL -frågor som har tillgång till relaterade objekt eller historier.

- Replikeringsfördröjning och frågestatistik: Salesforces Query Optimizer förlitar sig på förskriven statistik som uppdateras med jämna mellanrum. Sandlådor, särskilt nyligen uppdaterade sådana, kan ha ny statistik som gör att optimeringen kan välja bättre frågeställningar.

- Plattformsförbättringar: Ibland distribuerar Salesforce nya prestandaförbättringar och funktioner först i sandlådor för tidig testning. Detta kan tillfälligt förbättra sandlådans prestanda i förhållande till äldre produktionsmiljöer.

Sammanfattningsvis körs SOQL -frågor snabbare i sandlådmiljöer främst på grund av mindre och mindre komplexa datasätt, bättre indexpliktivitet, minskad systemkonvention, effektiv caching, fokuserad frågefrihet under utveckling och enklare säkerhet och delning av konfigurationer. Dessa kombinerade faktorer skapar förhållanden där Salesforces frågeformiserare kan utföra frågor mer effektivt och där resurser är lättare tillgängliga för behandling av frågor. Denna miljö främjar bättre prestanda ouppnåelig i den mycket laddade och komplexa karaktären av produktion orgs. Sandlådor fungerar således både som en utveckling/testning av lekplats och en plats för prestationsinställning innan de distribuerar frågor och applikationer i produktion där prestandakraven och datakomplexiteten är mycket högre. Alla dessa insikter är hämtade från Salesforce Performance Best Practices, Developer Experience och Salesforces arkitekturegenskaper.