Es werden nur Ereignisse gezählt, bei denen die CPU des Anwendungsservers genutzt wird. Es gibt einige Ereignisse, die die Anwendungsserver-CPU beanspruchen, jedoch nicht gezählt werden. Dies sind in der Regel Ereignisse, die Sie als Programmierer nicht steuern können. Beispielsweise zählt die in der Datenbank zum Abrufen der Datensätze aufgewendete Zeit nicht. Ebenso wenig zählt die für die Rückgabe eines Callouts aufgewendete Wartezeit. Sie haben keine Kontrolle darüber, wann Ihr Code kompiliert werden muss. Daher wird diese Zeit nicht gezählt.
Fast alle anderen Aktionen auf dem Anwendungsserver, einschließlich deklarativer Aktionen, werden jedoch mitgezählt. Wenn die DML in Ihrem Code eine Validierungsregel mit einer Formel ermittelt, wird die zum Auswerten der Formel aufgewendete Zeit gezählt. Die CPU-Zeit wird für alle Ausführungen auf den Salesforce-Anwendungsservern berechnet, die in einer Apex-Transaktion ablaufen – für den ausgeführten Apex-Code und alle Prozesse, die von diesem Code aufgerufen werden, wie Paketcode und Workflows. Die CPU-Zeit wird für jede Transaktion gesondert betrachtet und von anderen Transaktionen isoliert. Vorgänge, die keine CPU-Zeit des Anwendungsservers beanspruchen, werden nicht auf die CPU-Zeit angerechnet.
Unter Apex Code Best Practices (Bewährte Vorgehensweisen für Apex-Code) wird beschrieben, wie sich CPU-Zeitüberschreitungen vermeiden lassen. Im Folgenden werden einige der Vorschläge näher behandelt.
List<Account> lstacc=[Select Id from Account limit 10000]; Set<Id> setIds=new Set<Id>(); for(Account a:lstacc){ //More CPU time for sure due to looping setIds.add(a.id); } //Using Map query saves CPU time //Fetching all account in map Map<id,account> aMap = new Map<id,account>([Select Id,Name from Account limit 50000]); //Creating list of accounts List<account> accList = aMap.values() ; //Creating set of ids Set<id> accIds = aMap.keySet() ;
In manchen Fällen wird der Geschäftsprozess nicht in Echtzeit ausgeführt.Wenn die Möglichkeit besteht, dass der Code in @future ausgeführt wird, wird der Kontext unterbrochen. Zudem beträgt die Obergrenze der CPU-Zeitüberschreitung für den asynchronen Prozess 60 Sekunden (das Sechsfache des synchronen Prozesses). Das sollten Sie beachten, wenn die Gefahr besteht, dass Sie die Obergrenze überschreiten.
Da die Datenbankzeit nicht auf die CPU-Zeit angerechnet wird, empfiehlt es sich, die Nutzung der aggregierten SOQL für Ihren geschäftlichen Anwendungsfall zu erkunden.
Angenommen, Sie möchten den Feldwert einiger Datensätze aufrechnen. Wenn Sie eine normale for-Schleife verwenden, wird offensichtlich mehr CPU-Zeit in Anspruch genommen. Sie sollten stattdessen versuchen, Ihre Berechnung mithilfe von SUM,AVG-Aggregatfunktionen auf der Datenbankebene an sich zu berechnen. Dadurch reduzieren Sie die CPU-Zeit und verschieben den Prozess auf die Datenbankebene. Erkunden Sie Optionen zur Gruppierung oder erstellen Sie einen Filter auf Datenbankebene. Verschieben Sie Ihre Berechnungen auf Datenbankebene, um die Möglichkeit zu verringern, dass CPU-Zeitüberschreitungsprobleme auftreten.
Es ist wichtig, die Daten zu filtern, um nur die erforderlichen Daten zu verwenden, wenn Sie eine for-Schleife für eine Liste von Datensätzen ausführen. Eine zu starke Schleifenverwendung erhöht die CPU-Zeit. Gleiches galt, als noch keine Obergrenze für die Anzahl der Skriptanweisungen bestand.
Hinweis: Derzeit besteht ein bekanntes Problem mit DML-Einfügeoperationen, die die Apex-CPU beanspruchen, wenn sie für eine große Anzahl von Datensätzen mit zu vielen Spalten ausgeführt werden.
000387833

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.