Le domande SOQL (Salesforce Object Query Language) possono talvolta funzionare più velocemente in un ambiente Sandbox rispetto a un ambiente di produzione a causa di diversi fattori tecnici e operativi intrinseci al modo in cui le sandbox Salesforce sono impostate e gestite. La comprensione di questi fattori richiede di approfondire le differenze nei volumi di dati, l'indicizzazione, la memorizzazione nella cache, la contesa delle risorse e le ottimizzazioni del sistema specifiche per gli ambienti di produzione di sandbox rispetto.
volume e complessità dei dati
Uno dei motivi principali per cui le query SOQL sono più veloci negli ambienti sandbox è la differenza nel volume dei dati. I sandbox hanno in genere set di dati più piccoli rispetto agli ambienti di produzione, specialmente se sono sandbox parziali o sviluppatori, che copiano solo un sottoinsieme dei dati di produzione. Questo volume di dati ridotto significa che devono essere scansionati, indicizzati e restituiti da domande, accelerando naturalmente i tempi di esecuzione delle query. Anche nelle sandbox complete che rispecchiano i dati di produzione, frequenti aggiornamenti o istantanee potrebbero significare che i dati non sono così voluminosi o come frequentemente accessibili come nell'organizzazione di produzione dal vivo, con conseguenti migliori prestazioni a causa del minor carico complessivo del sistema.
indicizzazione e selettività
L'ottimizzatore query di Salesforce si basa fortemente sugli indici per accelerare l'esecuzione delle query. Le query che filtrano sui campi indicizzate sono spesso molto più veloci perché Salesforce può rapidamente restringere il set di risultati anziché scansionare l'intera tabella. Negli ambienti Sandbox, l'ottimizzatore di query potrebbe comportarsi in modo più efficiente perché la distribuzione dei dati può essere diversa, consentendo agli indici di essere più selettivi. Ad esempio, se una sandbox ha meno valori duplicati o null in determinati campi indicizzati rispetto alla produzione, l'ottimizzatore query può utilizzare gli indici in modo più efficace per eseguire le query più velocemente. Inoltre, gli ambienti di sandbox spesso consentono una maggiore flessibilità nella sperimentazione di indici personalizzati o sintonizzazione delle query senza influire sulla produzione, che può ottimizzare le prestazioni SOQL durante lo sviluppo e i test.
ridotto contesa e isolamento delle risorse
Gli ambienti di produzione sono multi-tenant e pesantemente utilizzati dagli utenti finali che eseguono varie operazioni contemporaneamente, creando tesi di risorse. Questa tesi può rallentare l'esecuzione delle query come CPU, memoria e I/O sono condivisi tra numerosi processi simultanei. Al contrario, le sandbox, in particolare gli sviluppatori e gli sviluppatori Pro Sandbox, tendono ad avere meno utenti simultanei e un carico generale più basso del sistema. Questa riduzione della domanda di elaborazione simultanea significa che le query possono accedere alle risorse più facilmente, riducendo i tempi di attesa e accelerando l'esecuzione.
cache e stabilità del piano di query
Salesforce impiega sofisticati meccanismi di memorizzazione nella cache per migliorare le prestazioni. Negli ambienti Sandbox, alcuni risultati di query e piani di esecuzione possono essere memorizzati nella cache, in particolare se i test ripetuti o le iterazioni di sviluppo eseguono le stesse domande. Questo effetto di memorizzazione nella cache può accelerare le prestazioni delle query su corse successive. Inoltre, poiché i dati di sandbox cambiano meno frequentemente della produzione, i piani e i risultati della query memorizzati nella cache rimangono validi più a lungo, migliorando l'efficienza delle query. Gli ambienti di produzione, con i loro cambiamenti di dati dinamici e continui e una pesante attività transazionale, non possono sfruttare la memorizzazione nella cache in modo efficace, portando a una ricompilazione più frequente dei piani di query e quindi prestazioni di query più lente.
Limiti del governatore e contesto di esecuzione
Salesforce impone limiti del governatore, incluso il numero massimo di query SOQL per transazione "per mantenere la stabilità della piattaforma. Nello sviluppo sandbox, gli sviluppatori spesso configurano e controllano i contesti di esecuzione più attentamente per evitare di colpire questi limiti, ad esempio bulkificando le query e elabora i dati in batch. Questo consapevole sviluppo e test aiutano a mantenere le query ottimizzate prima della distribuzione in produzione. Nella produzione, complessi processi aziendali e integrazioni possono inavvertitamente causare interrogazioni eccessive o inefficienti, portando a prestazioni più lente a causa di ripetuti colpi di database e colpire i limiti del governatore. I sandbox forniscono uno spazio più sicuro per eseguire il debug e ottimizzare queste domande, producendo migliori prestazioni relative.
Differenze nella condivisione di regole e impostazioni di sicurezza
Gli ambienti Sandbox possono avere regole di condivisione semplificate o diverse e configurazioni di sicurezza rispetto alla produzione. Salesforce applica le regole di condivisione e visibilità a livello di database durante l'esecuzione delle query. I calcoli di condivisione complessi nella produzione possono aggiungere sovraccarico alle query, in particolare quelle relative alla sicurezza a livello di oggetto e record. Sandbox utilizzati per lo sviluppo o il test a volte solleva o semplificare queste regole, riducendo la complessità dell'esecuzione e accelerando così le prestazioni della query SOQL.
focus test e ottimizzazione
Negli ambienti Sandbox, c'è generalmente un focus su test e ottimizzazione. Gli sviluppatori e gli amministratori profilano, analizzano e migliorano le query SOQL utilizzando strumenti Salesforce come lo strumento del piano di query, i registri delle prestazioni della console per sviluppatori e i registri di debug. Di conseguenza, le migliori pratiche apprese durante lo sviluppo di sandbox come selezionare solo i campi necessari, applicare filtri selettivi, evitare loop con query al loro interno, usando relazioni e aggregati in modo pensieroso e elaboraggio asincrone (come l'apice batch) sono implementati, risultando più veloci. Gli ambienti di produzione possono ancora contenere query legacy o non ottimizzate che degradano le prestazioni.
altri fattori che contribuiscono
- Inclinazione dei dati: i dati di produzione hanno spesso distribuzioni distorte, in cui un piccolo sottoinsieme di record domina il set di dati. Questa inclinazione può degradare le prestazioni delle query sconfiggendo le strategie di indicizzazione. I sandbox possono avere meno inclinazione, consentendo domande più efficienti.
- Vacum e riciclo Cestino Stato: i record eliminati nel cestino del riciclo possono avere un impatto sulle prestazioni. Le organizzazioni di produzione hanno comunemente un contenitore per riciclo più completo rispetto ai sandbox, che possono rallentare le query SOQL che accedono agli oggetti o alle storie correlate.
- LAG DI REPLICAZIONE E STATISTICHE DI QUERY: Optimizer query di Salesforce si basa su statistiche precomputate che vengono aggiornate periodicamente. I sandbox, in particolare quelli appena aggiornati, potrebbero avere nuove statistiche che consentono all'ottimizzatore di scegliere piani di query migliori.
- Miglioramenti della piattaforma: a volte Salesforce distribuisce nuovi miglioramenti e funzionalità delle prestazioni prima nei sandbox per i test precoci. Ciò potrebbe migliorare temporaneamente le prestazioni di sandbox rispetto agli ambienti di produzione più vecchi.
In sintesi, le query SOQL vengono eseguite più velocemente negli ambienti sandbox principalmente a causa di set di dati più piccoli e meno complessi, una migliore selettività dell'indice, una contenenza ridotta del sistema, una memorizzazione nella cache efficace, un'ottimizzazione delle query focalizzate durante lo sviluppo e una più semplice configurazione di sicurezza e condivisione. Questi fattori combinati creano condizioni in cui l'ottimizzatore query di Salesforce può eseguire query in modo più efficiente e in cui le risorse sono più prontamente disponibili per l'elaborazione delle query. Questo ambiente promuove una migliore prestazione irraggiungibile nella natura altamente carica e complessa delle organizzazioni di produzione. I sandbox fungono quindi come parco giochi di sviluppo/test sia come luogo per la messa a punto delle prestazioni prima di distribuire query e applicazioni nella produzione in cui le richieste di prestazioni e le complessità dei dati sono molto più elevate. Tutte queste intuizioni sono tratte dalle migliori pratiche di prestazioni di Salesforce, dalle esperienze degli sviluppatori e dalle caratteristiche dell'architettura di Salesforce.