Best Practices und Einschränkungen

Beachten Sie diese Richtlinien, wenn Sie BatchJobService verwenden.

Durchsatz verbessern

  • Weniger größere Jobs sind besser als viele kleinere Jobs.

  • Bestellen Sie hochgeladene Vorgänge nach Vorgangstyp. Wenn Ihr Job 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 Kampagnen Vorgänge, dann alle Anzeigengruppenvorgänge und schließlich alle Anzeigengruppenkriteriumsvorgänge ausgeführt werden.

  • 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, ist es effizienter, Vorgänge nach Anzeigengruppe zu gruppieren, anstatt Vorgänge zu mischen, die sich auf Anzeigengruppenkriterien in verschiedenen Anzeigengruppen auswirken.

Atomarität bei der Batchaufteilung

Die Google Ads API kann die Vorgänge in einem eingereichten Batchjob zur Verarbeitung in kleinere Sub-Batches aufteilen. Wenn Sie zusammengehörige Vorgänge wie Änderungen an Eintragsgruppen in einer AssetGroup und einer AdGroupnicht nacheinander in einem Batchjob gruppieren, teilt die Google Ads API diese Vorgänge möglicherweise in verschiedene Sub-Batches auf. Diese Trennung kann dazu führen, dass die gesamte Änderung fehlschlägt oder das Konto in einem inkonsistenten Zustand zurückbleibt.

Logische Gruppierung

AssetGroupListingGroupFilterOperation verwaltet Eintragsgruppen in einer AssetGroup, was bei Performance Max-Kampagnen üblich ist. AdGroupCriterionOperation verwaltet Eintragsgruppen in einer AdGroup, was bei Standard-Shopping-Kampagnen üblich ist. Beide werden verwendet, um die Produktausrichtung zu definieren. Wenn Sie Änderungen vornehmen, die sich auf die Hierarchie der Produktausrichtung in beiden Kontexten auswirken, gruppieren Sie diese Vorgänge nacheinander in Ihrem Batchjob, damit sie zusammen angewendet werden.

Datenkonsistenz

Um die Datenkonsistenz aufrechtzuerhalten und Teilaktualisierungen zu vermeiden, fügen Sie zusammengehörige Vorgänge für Eintragsgruppen nacheinander zu Ihrem Batchjob hinzu. Diese Reihenfolge trägt dazu bei, sie durch die Batchaufteilungslogik der API in atomare Sub-Batches zu gruppieren, wodurch verhindert wird, dass Ihr Konto in einem inkonsistenten Zustand zurückbleibt.

Probleme mit der Nebenläufigkeit vermeiden

  • Wenn Sie mehrere gleichzeitige Jobs für dasselbe Konto einreichen, versuchen Sie, die Wahrscheinlichkeit zu verringern, dass Jobs gleichzeitig an denselben Objekten arbeiten, während Sie große Jobgrößen beibehalten. Viele nicht abgeschlossene Jobs mit dem Status RUNNING, versuchen, dieselben Objekte zu ändern. Dies kann zu Deadlock-ähnlichen Bedingungen führen, die zu einer erheblichen Verlangsamung 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

  • Fragen Sie den Jobstatus nicht zu häufig ab, da sonst Fehler aufgrund von Ratenlimits auftreten können.

  • Rufen Sie nicht mehr als 1.000 Ergebnisse pro Seite ab. Der Server kann aufgrund der Last oder anderer Faktoren weniger Ergebnisse zurückgeben.

  • Die Reihenfolge der Ergebnisse entspricht der Reihenfolge des Uploads.

Zusätzliche Nutzungshinweise

  • Sie können eine Obergrenze für die Ausführungsdauer eines Batchjobs festlegen, bevor er abgebrochen wird. Wenn Sie einen neuen Batchjob erstellen, legen Sie das metadata.execution_limit_seconds Feld auf das gewünschte Zeitlimit in Sekunden fest. Wenn metadata.execution_limit_seconds nicht festgelegt ist, gibt es kein Standardzeitlimit.

  • Es wird empfohlen, nicht mehr als 1.000 Vorgänge pro AddBatchJobOperationsRequest hinzuzufügen und das sequence_token zu verwenden, um die restlichen Vorgänge in denselben Job hochzuladen. Je nach Inhalt der Vorgänge können zu viele Vorgänge in einer einzelnen AddBatchJobOperationsRequest einen REQUEST_TOO_LARGE-Fehler verursachen. Sie können diesen Fehler beheben, indem Sie die Anzahl der Vorgänge reduzieren und die AddBatchJobOperationsRequestnoch einmal versuchen.

Beschränkungen

  • Jeder BatchJob unterstützt bis zu eine Million Vorgänge.

  • Jedes Konto kann gleichzeitig bis zu 100 aktive oder ausstehende Jobs 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 Änderungsanfragen pro Anfrage.

  • Ab Version 22 gilt für das page_size Feld in ListBatchJobResultsRequest Folgendes:

    • Wenn page_size nicht festgelegt oder 0 ist, wird standardmäßig der Maximalwert von 1.000 verwendet.
    • Wenn page_size 1.000 übersteigt oder kleiner als 0 ist, gibt die API einen INVALID_PAGE_SIZE Fehler zurück.
  • Ab Version 23 darf jede AddBatchJobOperationsRequest maximal 41.937.920 Byte groß sein. Wenn Sie diesen Wert überschreiten, erhalten Sie einen INTERNAL_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 = 41_937_920;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.getSerializedSize();
    

    Python

    
    from google.ads.googleads.client import GoogleAdsClient
    
    MAX_REQUEST_BYTES = 41937920
    
    ... (code to get the request object)
    
    size_in_bytes = request._pb.ByteSize()
    

    Ruby

    
    require 'google/ads/google_ads'
    
    MAX_REQUEST_BYTES = 41937920
    
    ... (code to get the request object)
    
    size_in_bytes = request.to_proto.bytesize
    

    PHP

    
    use Google\Ads\GoogleAds\V24\Resources\Campaign;
    
    const MAX_REQUEST_BYTES = 41937920;
    
    ... (code to get the request object)
    
    $size_in_bytes = $campaign->byteSize() . PHP_EOL;
    

    .NET

    
    using Google.Protobuf;
    const int MAX_REQUEST_BYTES = 41937920;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.ToByteArray().Length;
    

    Perl

    
    use Devel::Size qw(total_size);
    use constant MAX_REQUEST_BYTES => 41937920;
    
    ... (code to get the request object)
    
    my $size_in_bytes = total_size($request);
    

Größe einzelner Änderungsanfragen

Die Gesamtgröße der Anfrage kann zwar größer sein, die Größe einer einzelnen Änderungsanfrage im Batch ist jedoch auf 10.484.488 Byte (ca. 10,48 MB) begrenzt.