Salesforce nos permite procesar o ejecutar un número particular de declaraciones/registros a la vez. Hay algunos límites para declaraciones DML, clases de Apex, etc., para ejecutar o procesar. Estos límites se conocen como límites del gobernador. En este tutorial, veremos cuáles son los límites del gobernador y cómo se pueden manejar. Además, Salesforce Apex proporciona la clase de "límite" para conocer los límites relacionados con las llamadas, las clases de Apex, los componentes web de Lightning, las declaraciones SOSL y SOQL.
Límites de gobernador
Considere un escenario en el que Alish y Subash son dos personas que usan la Org de Salesforce. Alice quiere procesar o ejecutar declaraciones de 1000 DML en una transacción. En paralelo, Subash quiere cargar 5000 registros a la vez. Si lo hacen en paralelo, Salesforce no aceptará y se vuelve agitado. Por lo tanto, los límites del gobernador entran en escena. En este caso, Alish puede procesar 100 DML a la vez y Subash puede procesar 500 registros a la vez. Pueden usar el Apex Asynchronousbatch para hacer cada transacción en un hilo separado sin perturbar cada uno de ellos y completar su tarea.
Básicamente, los límites del gobernador en Salesforce limitan el procesamiento y la ejecución en múltiples transacciones. "Límites de Apex por transacción" cuenta para cada transacción y el "límite de Apex específico del tamaño" se ocupa del tamaño del código. Salesforce admite dos procesos: procesos sincrónicos y asíncronos. En el proceso sincrónico, el script Apex se ejecuta en una sola GO, mientras que en el proceso asíncrono, el script Apex se ejecuta dividiendo en múltiples trabajos.
Límites permitidos
Discutamos el recuento de límites para diferentes escenarios:
Ejemplo de clase de límite:
APEX puede especificar los límites del gobernador en la clase de "límite". Esta clase proporciona algunos métodos que le dicen a los límites del gobernador. Veamos el siguiente ejemplo que muestra algunos límites del gobernador:
Sistema.Debug ('Número de consultas agregadas se puede procesar:'+ Límites.getLimitAgGreateQueries ());Producción:
También puede ser posible verificar cuántas declaraciones/filas DML se pueden devolver utilizando los métodos de "domo" que están presentes en la clase "Límite".
Ejemplo de uso:
Escribamos una consulta SOQL que devuelve los dos registros del objeto "Trabajo de trabajo". Después de eso, elimine estos dos registros usando DML "Eliminar".
Sistema.Debug ('DML declaraciones:'+Límites.getDmlStatements ());Producción:
En el ejemplo dado, no hay declaraciones DML y 0 filas. El tiempo de CPU existente es de 1 milisegundo. Después de devolver 2 filas de la consulta SOQL y eliminar estas dos filas, el número total de declaraciones DML devueltas por los límites.getDmlStatements () es 1, las filas totales devueltas por los límites.getDmlrows () es 2, y el tiempo de la CPU que se necesita para ejecutar esta transacción es de 51 milisegundos.
Ejemplo de la mejor práctica: "Nunca use DML dentro del bucle"
Veamos cómo podemos ejecutar el código sin obtener el límite del gobernador. Primero creamos un registro en el objeto "Producto" (API - Product2) desde el objeto "PRODISIÓN DE TRABAJO" asignando el sujeto "orden de trabajo" al "nombre del producto" en el bucle "para" en sí mismo. Veamos el siguiente código:
Product2 prod_obj;Podemos hacer esto de una mejor manera declarando una lista (prod_s) y luego almacenando el prod_obj en la lista. Podemos insertar esta lista en el producto fuera del bucle.
List prod_s = new List ();Conclusión
Ahora aprendimos qué límites de Apex están en Salesforce con una explicación detallada. Es mejor ir con el proceso de Apex asíncrono para obtener mejores límites de gobernadores en comparación con el ápice sincrónico. También aprendimos sobre los límites del gobernador para diferentes escenarios y dimos una demostración de muestra con respecto al recuento de límites desde la clase de "límite". También verificamos el recuento de declaraciones DML, filas y tiempo de CPU ejecutando una declaración DML. Concluimos esta guía discutiendo un ejemplo de mejor práctica.