Beachten Sie die folgenden Richtlinien, wenn Sie BatchJobService verwenden.
Durchsatz verbessern
Weniger größere Jobs sind besser als viele kleinere Jobs.
Hochgeladene Vorgänge nach Vorgangstyp sortieren. Wenn Ihr Job beispielsweise Vorgänge zum Hinzufügen von Kampagnen, Anzeigengruppen und Anzeigengruppenkriterien enthält, ordnen Sie die Vorgänge in Ihrem Upload so an, dass zuerst alle Kampagnenvorgänge, dann alle Anzeigengruppenvorgänge und schließlich alle Anzeigengruppenkriteriumvorgänge stehen.
Bei Vorgängen desselben Typs kann es die Leistung verbessern, sie nach übergeordneter Ressource zu gruppieren. Wenn Sie beispielsweise eine Reihe von
AdGroupCriterionOperation-Objekten haben, kann es effizienter sein, Vorgänge nach Anzeigengruppe zu gruppieren, anstatt Vorgänge zu mischen, die sich auf Anzeigengruppenkriterien in verschiedenen Anzeigengruppen auswirken.
Probleme mit der Parallelität vermeiden
Wenn Sie mehrere gleichzeitige Jobs für dasselbe Konto einreichen, sollten Sie die Wahrscheinlichkeit verringern, dass Jobs gleichzeitig für dieselben Objekte ausgeführt werden. Gleichzeitig sollten Sie darauf achten, dass die Jobs groß genug sind. Viele unfertige Jobs mit dem Status
RUNNINGversuchen, dieselben Objekte zu ändern. Dies kann zu Deadlock-ähnlichen Bedingungen führen, die zu erheblichen Verlangsamungen und sogar zu Jobfehlern führen.Reichen Sie nicht mehrere Vorgänge ein, die dasselbe Objekt im selben Job ändern, da das Ergebnis unvorhersehbar sein kann.
Ergebnisse optimal abrufen
Rufen Sie den Jobstatus nicht zu häufig ab, da sonst Ratenbegrenzungen erreicht werden können.
Rufen Sie nicht mehr als 1.000 Ergebnisse pro Seite ab. Der Server gibt möglicherweise weniger als diese Anzahl zurück, z. B. aufgrund einer hohen Auslastung.
Die Reihenfolge der Ergebnisse entspricht der Reihenfolge der Uploads.
Zusätzliche Hinweise zur Verwendung
Sie können eine Obergrenze für die Ausführungsdauer eines Batchjobs festlegen, bevor er abgebrochen wird. Legen Sie beim Erstellen eines neuen Batchjobs das Feld
metadata.execution_limit_secondsauf das gewünschte Zeitlimit in Sekunden fest. Wennmetadata.execution_limit_secondsnicht festgelegt ist, gibt es kein Standardzeitlimit.Es wird empfohlen, nicht mehr als 1.000 Vorgänge pro
AddBatchJobOperationsRequesthinzuzufügen und diesequence_tokenzu verwenden, um die restlichen Vorgänge in denselben Job hochzuladen. Je nach Inhalt der Vorgänge kann es bei zu vielen Vorgängen in einem einzelnenAddBatchJobOperationsRequestzu einemREQUEST_TOO_LARGE-Fehler kommen. Sie können diesen Fehler beheben, indem Sie die Anzahl der Vorgänge reduzieren und denAddBatchJobOperationsRequestnoch einmal versuchen.
Beschränkungen
Jede
BatchJobunterstützt bis zu eine Million Vorgänge.Jedes Konto kann bis zu 100 aktive oder ausstehende Jobs gleichzeitig haben.
Ausstehende Jobs, die älter als 7 Tage sind, werden automatisch entfernt.
Ab Version 22 gilt für jede
AddBatchJobOperations-Anfrage ein Limit von 10.000 Mutationsvorgängen pro Anfrage.Ab Version 22 gilt für das Feld
page_sizeinListBatchJobResultsRequest:- Wenn
page_sizenicht festgelegt oder 0 ist, wird standardmäßig der Maximalwert von 1.000 verwendet. - Wenn
page_sizegrößer als 1.000 oder kleiner als 0 ist, gibt die API den FehlerINVALID_PAGE_SIZEzurück.
- Wenn
Jede
AddBatchJobOperationsRequestdarf maximal 10.484.504 Byte groß sein. Wenn Sie dieses Limit überschreiten, erhalten Sie eineINTERNAL_ERROR. Sie können die Größe der Anfrage vor dem Senden ermitteln und entsprechende Maßnahmen ergreifen, wenn sie zu groß ist.Java
static final int MAX_REQUEST_BYTES = 10_484_504; ... (code to get the request object) int sizeInBytes = request.getSerializedSize();Python
from google.ads.googleads.client import GoogleAdsClient MAX_REQUEST_BYTES = 10484504 ... (code to get the request object) size_in_bytes = request._pb.ByteSize()Ruby
require 'google/ads/google_ads' MAX_REQUEST_BYTES = 10484504 ... (code to get the request object) size_in_bytes = request.to_proto.bytesizePHP
use Google\Ads\GoogleAds\V16\Resources\Campaign; const MAX_REQUEST_BYTES = 10484504; ... (code to get the request object) $size_in_bytes = $campaign->byteSize() . PHP_EOL;.NET
using Google.Protobuf; const int MAX_REQUEST_BYTES = 10484504; ... (code to get the request object) int sizeInBytes = request.ToByteArray().Length;Perl
use Devel::Size qw(total_size); use constant MAX_REQUEST_BYTES => 10484504; ... (code to get the request object) my $size_in_bytes = total_size($request);