Spiegazione dei limiti del regolatore Salesforce

Spiegazione dei limiti del regolatore Salesforce

Ana NetoTechnical Leave a Comment

I limiti del governatore di Salesforce sono fondamentali per mantenere la stabilità e l'efficienza di Salesforce. Dato che Salesforce (e Apex) funzionano in un ambiente multitenant con risorse condivise, i limiti del governatore servono a garantire che nessun singolo utente consumi tutte le risorse, mantenendo la piattaforma equa e reattiva per tutti.

Questo articolo vi aiuterà a capire quali sono questi limiti e come lavorare in modo efficace.

1. Che cos'è un governatore Salesforce?

Definizione:

Un governatore Salesforce è un meccanismo di sistema all'interno dell'Salesforce che impone limiti specifici all'utilizzo delle risorse. È un punto di controllo che assicura una distribuzione equa delle risorse del sistema.

Ruolo:

I governor impediscono a un singolo tenant di monopolizzare le risorse. In questo modo l'ambiente Salesforce rimane stabile ed efficiente per tutti gli utenti.

2. Quali sono i limiti del governatore Salesforce?

I limiti del governatore SFDC sono le restrizioni specifiche applicate da Salesforce per mantenere le prestazioni e la sicurezza del sistema.

Considerate i limiti del governatore in Salesforce come le regole di prestito in una biblioteca. La biblioteca consente di prendere in prestito un certo numero di libri (risorse) alla volta per garantire a tutti l'accesso. Ogni operazione nell'Salesforce è come prendere in prestito un libro. Ci sono limiti al numero di libri (interrogazioni, Istruzioni DML) che si può prendere in prestito per garantire un uso equo e la disponibilità del suo

 ➡️ Si noti che i limiti del governatore Salesforce non includono lo stoccaggio.
Per informazioni sui limiti di dati e di archiviazione dell'Salesforce, consultare gli altri articoli
Dati Salesforce: Riduzione dei costi e aumento della conformità e Salesforce Limite di stoccaggio superato.

Anche i limiti delle chiamate API esulano dallo scopo di questo articolo, ma è bene sapere che esiste un limite giornaliero di chiamate API. Il limite varia in base al tipo di organizzazione e alla licenza. È possibile verificare i limiti dell'API Salesforce (in modo programmatico) utilizzando il comando Classe OrgLimits. Ulteriori informazioni sul Limiti e allocazioni delle richieste API articolo.

3. Tipi comuni di limiti del regolatore Salesforce

Limiti delle query SOQL:

  • L'errore "Troppe query SOQL" si verifica quando viene eseguito più del numero massimo di query SOQL in una singola transazione. In una query SOQL con sottoquery genitore-figlio, ogni relazione genitore-figlio conta come una query in più.
  • Query massime: 100 (sincrone), 200 (asincrone).

Risultato Limiti di riga:

  • L'errore "Troppe righe di query" si verifica quando le query in una singola transazione restituiscono un numero di righe superiore a quello consentito.
  • Numero massimo di righe della query: 50 000

Limiti delle istruzioni DML:

  • L'errore "Troppe istruzioni DML" si verifica quando viene eseguito un numero di operazioni DML superiore a quello consentito in una singola transazione.
  • Operazioni DML massime: 150 (sincrone), 300 (asincrone).

Limiti di dimensione dell'heap:

  • L'errore "Apex heap size too large" si verifica quando durante l'elaborazione vengono memorizzati troppi dati.
  • Dimensione massima dell'heap: 6 MB (sincrono), 12 MB (asincrono).

Limiti di tempo della CPU:

  • L'errore "Apex CPU time limit exceeded" significa che la transazione ha richiesto troppo tempo, superando il tempo massimo di CPU.
  • Tempo massimo di CPU: 10.000 ms (sincrono), 60.000 ms (asincrono).

Per altri tipi di limiti del governatore, controllare la sezione Guida per gli sviluppatori Apex.

4. Superamento dei limiti del governatore: Un esempio e una soluzione

Un problema comune che gli sviluppatori si trovano ad affrontare è l'eccezione del limite del governatore "101 Too Many SOQL Queries". Questo errore si verifica quando vengono eseguite più di 100 query SOQL in una singola transazione (in modalità sincrona).

Esempio: Si consideri il seguente frammento di codice che cerca di recuperare i dettagli del conto all'interno di un ciclo:

 

public class AccountProcessor {

    public void processAccounts() {

        List accounts = [SELECT Id, Name FROM Account];

        per (Conto acc : conti) {

       // Questa query all'interno di un ciclo può facilmente superare il limite SOQL, se ci sono molti account.

            List contacts = [SELECT Id, Name FROM Contact WHERE AccountId = :acc.Id];

            // Contatti di processo

        }

    }

}

 

Questo codice raggiungerà rapidamente il limite di 101 query SOQL se il numero di conti è superiore a 100.

 

Soluzione: Un approccio migliore sarebbe quello di raggruppare la query:

 

public class AccountProcessor {

    public void processAccounts() {

        List accounts = [SELECT Id, Name FROM Account];

        Set accountIds = new Set();

        per (Conto acc : conti) {

            accountIds.add(acc.Id);

        }

        List contacts = [SELECT Id, Name, AccountId FROM Contact WHERE AccountId IN :accountIds];

        Map<Id, List> accountContactsMap = new Map<Id, List>();

        per (Contatto con : contatti) {

            if (!accountContactsMap.containsKey(con.AccountId)) {

                accountContactsMap.put(con.AccountId, new List());

            }

            accountContactsMap.get(con.AccountId).add(con);

       }


        per (Conto acc : conti) {

            List acctContacts = accountContactsMap.get(acc.Id);

            // Contatti di processo

        }

    }

}

Questo codice modificato potrebbe essere un po' più lungo, ma recupera tutti i contatti correlati in un'unica query, evitando il limite SOQL.

L'eccezione "101 Too Many SOQL Queries" Governor Limit è comune anche durante il caricamento dei file, quando si utilizza una query per caricare ciascun file.

5. Come monitorare i limiti del regolatore Salesforce

Il monitoraggio dell'utilizzo delle risorse è essenziale per assicurarsi di non superare questi limiti. A tale scopo è necessario utilizzare la console per sviluppatori Salesforce.

Se si verifica uno degli errori menzionati in precedenza, i log di debug possono essere d'aiuto. L'Salesforce fornisce anche un Limiti classe e metodi integrati come

  • getQueries();
  • getDML();
    Restituisce il numero di record che sono stati elaborati con un'istruzione che conta per i limiti DML.

6. Evitare le cause più comuni degli errori del limite del regolatore

Le cause più comuni degli errori del limite del governatore sono le seguenti:

  • Avere query e operazioni all'interno di loop: Evitare le operazioni DML e le query all'interno dei cicli.
  • Gestione impropria degli errori: Implementare una corretta gestione delle eccezioni per evitare errori limite imprevisti.

7. Migliori pratiche per la gestione dei limiti del governatore

Per non superare i limiti, seguite queste buone pratiche:

Interrogazione efficiente:

  • Cercare di recuperare tutti i dati necessari in un'unica query piuttosto che in un ciclo. Se è necessario un ciclo, utilizzare i cicli for di SOQL. Se il problema è che il set di risultati contiene troppe righe, utilizzare Limite e Filtro nelle query.

Lavorazione alla rinfusa:

  • Utilizzare metodi di elaborazione in blocco e modelli di progettazione. Combinare i record in raccolte ed eseguire operazioni DML di massa.

Uso delle collezioni:

  • Ridurre al minimo le operazioni DML utilizzando le raccolte.

Ottimizzazione del codice:

  • Scrivere codice efficiente e ottimizzato. Evitate i loop non necessari e utilizzate algoritmi efficienti.

Transazioni governative:

  • Scegliete l'elaborazione asincrona per gestire operazioni su larga scala.

8. Strategie avanzate per grandi volumi di dati

La gestione di grandi volumi di dati richiede strategie come l'elaborazione asincrona, l'elaborazione batch e l'accodamento dei lavori.

Utilizzo Metodi @futuri, Batch Apexe Apice accodabile per gestire operazioni estese senza superare i vari limiti.

9. Limiti del governatore In breve

I limiti del governatore garantiscono un uso equo delle risorse nell'architettura multitenant dell'Salesforce. Comprendendo quali sono questi limiti e come funzionano, è possibile evitare errori e ottimizzare le prestazioni dell'applicazione.

Abbiamo discusso i principali tipi di limiti del governatore, come i limiti delle query SOQL, i limiti delle istruzioni DML, la dimensione dell'heap e i limiti di tempo della CPU. Abbiamo anche mostrato come monitorare questi limiti utilizzando la Developer Console e la classe OrgLimits. È importante seguire le migliori pratiche, come l'efficienza delle query, l'elaborazione in blocco e l'elaborazione asincrona, per rimanere entro questi limiti.

Ad esempio, suddividere le transazioni di dati di grandi dimensioni utilizzando Batch Apex o Queueable Apex può aiutare a gestire e ottimizzare l'uso delle risorse. Allo stesso modo, capire le insidie come l'esecuzione di query o operazioni DML all'interno di loop può prevenire gli errori più comuni.

Ricordate che un codice efficiente e una corretta gestione delle risorse non solo riducono il rischio di superare i limiti, ma assicurano anche un funzionamento regolare per tutti gli utenti che condividono l'ambiente Salesforce.

10. Domande frequenti (FAQ)

  1. Quali sono i limiti del governatore Salesforce?
    • I limiti del governatore sono restrizioni che l'Salesforce applica per gestire le risorse del sistema.
  2. Perché l'Salesforce applica i limiti del governatore?
    • Assicurano un uso equo delle risorse e mantengono le prestazioni del sistema.
  3. Come posso verificare se mi sto avvicinando ai limiti del governatore?
    • Utilizzate la console per sviluppatori dell'Salesforce e strumenti quali Limiti per monitorare l'utilizzo.
  4. Cosa succede se si supera il limite del governatore?
    • Il superamento di un limite comporta errori e transazioni non riuscite.
  5. È possibile bypassare i limiti del regolatore Salesforce?
    • I limiti sono rigorosamente applicati, ma è possibile modificare il codice per lavorare entro i limiti esistenti, come si vede in questo esempio esempio.

Sull'autore

Ana Neto

Da Ana Netotechnical consulente presso Connecting Software.

"Sono un ingegnere informatico dal 1997, con un amore più recente per la scrittura e il public speaking". Avete domande o commenti su questo articolo? Mi piacerebbe avere il vostro feedback, lasciate un commento qui sotto!"

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.