O Salesforce nos permite processar ou executar um número específico de declarações/registros por vez. Existem alguns limites para declarações DML, aulas de ápice, etc., Para executar ou processar. Esses limites são conhecidos como limites do governador. Neste tutorial, veremos o que são os limites do governador e como eles podem ser tratados. Além disso, o Salesforce APEX fornece a classe "limite" para conhecer os limites relacionados a chamadas, aulas de ápice, componentes da Web Lightning, SOSL e SOQL Declarações.
Limites do governador
Considere um cenário em que Alish e Subash são duas pessoas usando a Org Salesforce. Alice deseja processar ou executar 1000 instruções DML em uma transação. Paralelamente, Subash quer carregar 5000 registros por vez. Se eles o fizerem em paralelo, o Salesforce não aceitará e se tornará agitado. Portanto, os limites do governador entram em cena. Nesse caso, Alish pode processar 100 DML por vez e Subash pode processar 500 registros por vez. Eles podem usar o ápice assíncronoombatch para fazer cada transação em um fio separado sem perturbar cada um deles e concluir sua tarefa.
Basicamente, os limites do governador no Salesforce limitam o processamento e a execução em várias transações. Os "limites do ápice da transação" contam para cada transação e "limite de ápice específico de tamanho" lida com o tamanho do código. O Salesforce suporta dois processos: processos síncronos e assíncronos. No processo síncrono, o script Apex é executado em uma única vez enquanto no processo assíncrono, o script do ápice é executado dividindo -se em vários trabalhos.
Limites permitidos
Vamos discutir a contagem de limites para diferentes cenários:
Exemplo de classe limite:
Apex pode especificar os limites do governador na classe "limite". Esta classe fornece alguns métodos que dizem aos limites do governador. Vejamos o exemplo a seguir, que exibe alguns limites do governador:
Sistema.Debug ('Número de consultas agregadas pode ser processado:'+ limites.getlimitAggregateQueries ());Saída:
Também pode ser possível verificar quantas instruções/linhas DML podem ser retornadas usando os métodos "cúpulas" que estão presentes na classe "limite".
Exemplo de uso:
Vamos escrever uma consulta SOQL que retorne os dois registros do objeto "Trabalho". Depois disso, exclua esses dois registros usando o DML "excluir".
Sistema.Debug ('Declarações DML:'+limites.getdmlStatements ());Saída:
No exemplo dado, não há declarações DML e 0 linhas. O tempo existente da CPU é 1 milissegundo. Depois de devolver 2 linhas da consulta SOQL e excluir essas duas linhas, o número total de declarações DML que é retornada pelos limites.getdmlstatements () é 1, o total de linhas retornadas pelos limites.getdmlRows () é 2 e o tempo de CPU necessário para executar esta transação é de 51 milissegundos.
Exemplo de prática recomendada: “Nunca use DML dentro do loop”
Vamos ver como podemos executar o código sem obter o limite do governador. Primeiro, criamos um registro no objeto "Produto" (API - Product2) do objeto "Trabalho -order", atribuindo o "Order de trabalho" sujeito ao "nome do produto" no próprio loop "para". Vamos ver o seguinte código:
Product2 prod_obj;Podemos fazer isso de uma maneira melhor declarando uma lista (Prod_s) e depois armazenando o Prod_obj na lista. Podemos inserir esta lista no produto fora do loop.
Lista prod_s = new List ();Conclusão
Agora aprendemos o que os limites do Apex são no Salesforce com uma explicação detalhada. É melhor ir com o processo ápice assíncrono para obter melhores limites do governador quando comparado ao ápice síncrono. Também aprendemos sobre os limites do governador para diferentes cenários e fizemos uma demonstração de amostra sobre a contagem de limites da classe "limite". Também verificamos a contagem de declarações DML, linhas e tempo da CPU executando uma instrução DML. Concluímos este guia discutindo um exemplo de melhor prática.