Mit Salesforce können wir eine bestimmte Anzahl von Aussagen/Datensätzen gleichzeitig verarbeiten oder ausführen. Es gibt einige Grenzen für DML -Anweisungen, Apex -Klassen usw., ausführen oder verarbeiten. Diese Grenzen sind als Gouverneur -Grenzen bekannt. In diesem Tutorial werden wir sehen, was der Gouverneur begrenzt ist und wie sie behandelt werden können. Außerdem bietet Salesforce Apex die Klasse „Limit“, um die Grenzen zu kennen, die sich auf Callouts, Apex -Klassen, Lightning -Webkomponenten, SOSL und SOQL -Anweisungen beziehen.
Gouverneur Grenzen
Betrachten Sie ein Szenario, in dem Alish und Subash zwei Personen sind, die die Salesforce Org nutzen. Alice möchte 1000 DML -Anweisungen in einer Transaktion verarbeiten oder ausführen. Parallel dazu möchte Subash jeweils 5000 Datensätze laden. Wenn sie es parallel tun, akzeptiert Salesforce nicht und wird hektisch. Daher kommen Governorgrenzen ins Bild. In diesem Fall kann Alish jeweils 100 DML verarbeiten, und Subash kann jeweils 500 Datensätze verarbeiten. Sie können die AsynchronousBatch -Apex verwenden, um jede Transaktion auf einem separaten Faden durchzuführen, ohne jede von ihnen zu stören und ihre Aufgabe zu erledigen.
Grundsätzlich begrenzen der Gouverneur die Verarbeitung und Ausführung in mehreren Transaktionen ein. "Pro transaktions Apex-Grenzwerte" zählt für jede Transaktion und "Größenspezifische Apex-Grenze" befasst sich mit der Größe des Codes. Salesforce unterstützt zwei Prozesse: synchrone und asynchrone Prozesse. Im synchronen Prozess wird das Apex -Skript in einem einzigen GO ausgeführt, während im asynchronen Prozess das Apex -Skript durch Aufteilung in mehrere Jobs ausgeführt wird.
Erlaubte Grenzen
Lassen Sie uns die Grenze für verschiedene Szenarien diskutieren:
Klassenbeispiel einschränken:
Apex kann die Governor -Grenzen in der Klasse „Limit“ angeben. Diese Klasse bietet einige Methoden, die den Governor -Grenzen mitteilen. Schauen wir uns das folgende Beispiel an, in dem einige Governor -Grenzen angezeigt werden:
System.Debugg ('Anzahl der aggregierten Abfragen kann bearbeitet werden:'+ Grenzwerte.getLimitaggregatequerien ());Ausgang:
Es kann auch möglich sein zu überprüfen.
Verwendungsbeispiel:
Schreiben wir eine SoQL -Abfrage, die die beiden Datensätze aus dem Objekt "WorkOrder" zurückgibt. Löschen Sie diese beiden Datensätze danach mit "DML" "Löschen".
System.Debugg ('DML -Aussagen:'+Grenzen.getdmlStatements ());Ausgang:
Im angegebenen Beispiel gibt es keine DML -Anweisungen und 0 Zeilen. Die bestehende CPU -Zeit beträgt 1 Millisekunde. Nach Rückgabe von 2 Zeilen aus der SOQL -Abfrage und dem Löschen dieser beiden Zeilen die Gesamtzahl der DML.getdmlStatements () ist 1, die Gesamtreihen, die durch die Grenzen zurückgegeben werden.getdmlrows () ist 2 und die CPU -Zeit, die für die Ausführung dieser Transaktion benötigt wird, beträgt 51 Millisekunden.
Best -Practice -Beispiel: „Verwenden Sie niemals DML in der Schleife“
Mal sehen, wie wir den Code ausführen können, ohne das Gouverneur -Grenzwert zu erhalten. Wir erstellen zunächst einen Datensatz für das „Produkt“ -Objekt (API - Product2) aus dem Objekt „Workorder“, indem wir den „WorkOrder“ dem „Produktnamen“ in der „für“ Schleife selbst zuweisen. Lassen Sie uns den folgenden Code sehen:
Product2 prod_obj;Wir können dies besser tun, indem wir eine Liste (prod_s) deklarieren und dann den prod_obj in der Liste speichern. Wir können diese Liste außerhalb der Schleife in das Produkt einfügen.
Liste prod_s = new list ();Abschluss
Wir haben jetzt erfahren, welche Apex -Grenzen mit einer detaillierten Erklärung in Salesforce sind. Es ist besser, mit dem asynchronen Apex -Prozess einzugehen, um bessere Gouverneur -Grenzen im Vergleich zu synchroner Apex zu erlangen. Wir haben auch die Grenzen der Gouverneur für verschiedene Szenarien erfahren und eine Beispieldemonstration bezüglich der Grenzzahl aus der Klasse „Limit“ gegeben. Wir haben auch die Anzahl von DML -Anweisungen, Zeilen und CPU -Zeit überprüft, indem wir eine DML -Anweisung ausführen. Wir haben diesen Leitfaden abgeschlossen, indem wir ein Best -Practice -Beispiel diskutierten.