Întrebările SOQL (Salesforce Object Query Language) pot rula uneori mai repede într -un mediu de nisip în comparație cu un mediu de producție, datorită mai multor factori tehnici și operaționali intrinseci cu modul în care sunt configurate și gestionate și gestionate. Înțelegerea acestor factori necesită aprofundarea diferențelor în volumele de date, indexarea, memoria cache, contestația resurselor și optimizările sistemului specifice mediilor de producție de nisip versus.
Volumul și complexitatea datelor
Unul dintre motivele principale pentru care interogările SOQL rulează mai repede în mediile de nisip este diferența de volum de date. Sandbox -urile au de obicei seturi de date mai mici decât mediile de producție, mai ales dacă sunt parțiale sau dezvoltatoare de nisip, care copiază doar un subset al datelor de producție. Acest volum redus de date înseamnă că mai puține înregistrări trebuie scanate, indexate și returnate prin interogare, accelerând în mod natural timpii de execuție a interogării. Chiar și în cutii de nisip complete, care oglindesc datele de producție, actualizări frecvente sau instantanee ar putea însemna că datele nu sunt la fel de voluminoase sau la fel de frecvent accesate ca în org de producție live, ceea ce duce la o performanță mai bună datorită încărcăturii generale mai mici.
Indexare și selectivitate
Optimizatorul de interogare al Salesforce se bazează foarte mult pe indexuri pentru a accelera execuția interogării. Întrebările care filtrează pe câmpurile indexate sunt adesea mult mai rapide, deoarece Salesforce poate restrânge rapid setul de rezultate, mai degrabă decât scanarea întregului tabel. În mediile de sandbox, optimizatorul de interogare s -ar putea comporta mai eficient, deoarece distribuția datelor poate fi diferită, permițând indexurilor să fie mai selectivi. De exemplu, dacă o cutie de nisip are mai puține valori duplicate sau nule în anumite câmpuri indexate decât producția, optimizatorul de interogare poate utiliza indexuri mai eficient pentru a executa mai repede interogări. Mai mult decât atât, mediile Sandbox permit adesea mai multă flexibilitate în experimentarea cu indexuri personalizate sau reglarea interogării fără a afecta producția, ceea ce poate optimiza performanța SOQL în timpul dezvoltării și testării.
Reducerea conținutului și a izolării resurselor
Mediile de producție sunt multi-chiriași și sunt foarte utilizați de către utilizatorii finali care efectuează diverse operații simultan, creând contenție resurse. Această afirmație poate încetini execuția interogării, deoarece CPU, memoria și I/O sunt partajate între numeroase procese concomitente. În schimb, cutii de nisip, în special dezvoltatori și dezvoltatori Pro Sandbox -uri, tind să aibă mai puțini utilizatori simultan și o încărcare generală mai mică a sistemului. Această reducere a cererii de procesare simultană înseamnă că întrebările pot accesa resursele mai ușor, reducând timpii de așteptare și accelerarea execuției.
Stabilitatea planului de cache și interogare
Salesforce angajează mecanisme sofisticate de cache pentru interogare pentru a îmbunătăți performanța. În mediile Sandbox, anumite rezultate de interogare și planuri de execuție pot fi în cache, în special dacă testele repetate sau iterațiile de dezvoltare execută aceleași întrebări. Acest efect de memorie în cache poate accelera performanța de interogare pe rulările ulterioare. Mai mult, deoarece datele de nisip se schimbă mai rar decât producția, planurile de interogare în cache și rezultatele rămân valabile mai mult timp, îmbunătățind eficiența interogării. Mediile de producție, cu schimbările lor dinamice și continue de date și activitatea tranzacțională grea, nu pot folosi cache -ul ca fiind eficient, ceea ce duce la recompilarea mai frecventă a planurilor de interogare și, prin urmare, la performanțele de interogare mai lente.
Limitele guvernatorului și contextul de execuție
Salesforce impune limitele guvernatorului, inclusiv numărul maxim de interogări SOQL pe tranzacție pentru menținerea stabilității platformei. În cadrul cutiei de nisip pentru dezvoltare, dezvoltatorii configurează și controlează contextele de execuție mai mult cu atenție pentru a evita lovirea acestor limite, de exemplu, prin interogările și procesarea datelor în loturi. Această dezvoltare și testare atentă ajută la menținerea întrebărilor optimizate înainte de implementarea la producție. În producție, procesele și integrările de afaceri complexe pot provoca, din neatenție, o interogare excesivă sau ineficientă, ceea ce duce la performanțe mai lente din cauza locurilor de date repetate și a limitării limitelor guvernatorului. Sandbox -urile oferă un spațiu mai sigur pentru depanarea și optimizarea acestor întrebări, obținând o performanță relativă mai bună.
Diferențe în regulile de partajare și setările de securitate
Mediile Sandbox pot fi simplificate sau diferite reguli de partajare și configurații de securitate în comparație cu producția. Salesforce aplică regulile de partajare și vizibilitate la nivelul bazei de date în timpul executării interogării. Calculele complexe de partajare în producție pot adăuga cheltuieli generale la întrebări, în special cele legate de securitatea la nivel de obiect și înregistrare. Sandbox -uri utilizate pentru dezvoltare sau testare, uneori ridică sau simplifică aceste reguli, reducând complexitatea execuției și, astfel, accelerarea performanței de interogare SOQL.
TESTARE ȘI OPINIE FOCUS
În mediile de nisip, în general, se concentrează pe testare și optimizare. Dezvoltatorii și administratorii profilează în mod activ, analizează și îmbunătățesc interogările SOQL folosind instrumente Salesforce, cum ar fi instrumentul Planului de interogare, jurnalele de performanță ale consolei de dezvoltatori și jurnalele de depanare. În consecință, cele mai bune practici învățate în timpul dezvoltării cutiei de nisip, cum ar fi selectarea numai a câmpurilor necesare, aplicarea filtrelor selective, evitarea buclelor cu întrebări în interiorul lor, folosind relații și agregate cu gândire și procesare asincronă (cum ar fi vârful lotului) sunt implementate, rezultând întrebări mai rapide. Mediile de producție pot conține în continuare interogări moștenite sau neoptimizate care degradează performanța.
Alți factori care contribuie
- Date Skew: Datele de producție au adesea distribuții înclinate, unde un mic subset de înregistrări domină setul de date. Această înclinare poate degrada performanța de interogare prin înfrângerea strategiilor de indexare. Cutiile de nisip pot avea mai puțin înclinat, permițând întrebări mai eficiente.
- Starea de vid și reciclare a coșului: înregistrările șterse în coșul de reciclare pot avea un impact asupra performanței. Orgele de producție au în mod obișnuit o coș de reciclare mai completă decât cutii de nisip, care pot încetini întrebările SOQL care accesează obiecte sau istorii conexe.
- Statistici privind la decalaj de replicare și interogare: Optimizatorul de interogare Salesforce se bazează pe statistici precomputate care sunt reîmprospătate periodic. Cutiile de nisip, în special cele recent reîmprospătate, ar putea avea statistici proaspete care permit optimizatorului să aleagă planuri de interogare mai bune.
- Îmbunătățiri ale platformei: Uneori, Salesforce implementează noi îmbunătățiri de performanță și caracteristici în primul rând în Sandbox -uri pentru testarea timpurie. Acest lucru ar putea spori temporar performanța Sandbox în raport cu mediile de producție mai vechi.
În rezumat, interogările SOQL funcționează mai repede în mediile de sandbox în principal datorită seturilor de date mai mici și mai puțin complexe, o mai bună selectivitate a indexului, o mai bună contenție a sistemului, cache eficientă, optimizarea interogării focalizate în timpul dezvoltării și configurațiile de securitate și partajare mai simple. Acești factori combinați creează condiții în care Optimizatorul de Query de la Salesforce poate executa întrebări mai eficient și unde resursele sunt mai ușor disponibile pentru procesarea întrebărilor. Acest mediu favorizează o performanță mai bună de neatins în natura extrem de încărcată și complexă a orgilor de producție. Sandbox -urile servesc astfel ca un loc de joacă pentru dezvoltare/testare, cât și un loc pentru reglarea performanței înainte de a implementa întrebări și aplicații în producție, unde cerințele de performanță și complexitățile de date sunt mult mai mari. Toate aceste idei sunt obținute din cele mai bune practici Salesforce Performance, experiențe pentru dezvoltatori și caracteristicile de arhitectură ale Salesforce.