Sprawdzone metody i ograniczenia

Podczas korzystania z BatchJobService należy wziąć pod uwagę te wskazówki.

Zwiększanie przepustowości

  • Preferowana jest mniejsza liczba większych zadań niż wiele mniejszych.

  • Uporządkuj przesłane operacje według ich typu. Jeśli np. zadanie zawiera operacje dodawania kampanii, grup reklam i ich kryteriów, uporządkuj operacje w przesłanym pliku tak, aby najpierw były wszystkie operacje dotyczące kampanii, potem wszystkie operacje dotyczące grup reklam, a na końcu wszystkie operacje dotyczące kryteriów grup reklam.

  • W przypadku operacji tego samego typu wydajność można zwiększyć, grupując je według zasobu nadrzędnego. Jeśli na przykład masz serię obiektów AdGroupCriterionOperation, bardziej efektywne może być grupowanie operacji według grupy reklam niż mieszanie operacji, które wpływają na kryteria w różnych grupach reklam.

Atomowość w dzieleniu zbiorczym

Interfejs Google Ads API może podzielić operacje w przesłanym zadaniu wsadowym na mniejsze podzbiory do przetworzenia. Jeśli nie pogrupujesz powiązanych operacji, takich jak modyfikacje grup informacji o produktach w ramach AssetGroup i AdGroup, kolejno w zadaniu wsadowym, interfejs Google Ads API może podzielić te operacje na różne podzbiory. Ten podział może spowodować niepowodzenie całej modyfikacji lub pozostawienie konta w stanie niespójnym.

Grupowanie logiczne

AssetGroupListingGroupFilterOperation zarządza grupami informacji o produktach w ramach AssetGroup, co jest powszechne w kampaniach Performance Max. AdGroupCriterionOperation zarządza grupami informacji o produktach w ramach AdGroup, co jest powszechne w standardowych kampaniach produktowych. Obie te operacje służą do określania kierowania na produkty. Jeśli wprowadzasz zmiany, które wpływają na hierarchię kierowania na produkty w obu kontekstach, pogrupuj te operacje kolejno w zadaniu wsadowym, aby mieć pewność, że zostaną zastosowane razem.

Spójność danych

Aby zachować spójność danych i zapobiec częściowym aktualizacjom, dodaj powiązane operacje na grupach informacji o produktach kolejno do zadania wsadowego. Ta kolejność pomaga grupować je w atomowe podzbiory za pomocą logiki dzielenia zbiorczego interfejsu API, co zapobiega pozostawieniu konta w stanie niespójnym.

Unikanie problemów z współbieżnością

  • Podczas przesyłania wielu równoczesnych zadań na to samo konto staraj się zmniejszyć prawdopodobieństwo, że zadania będą działać na tych samych obiektach w tym samym czasie, jeśli utrzymujesz duże rozmiary zadań. Wiele niedokończonych zadań, które mają stan RUNNING, próbuje zmieniać ten sam zestaw obiektów, co może prowadzić do sytuacji podobnych do zakleszczenia, powodujących znaczne spowolnienie, a nawet niepowodzenie zadań.

  • Nie przesyłaj w tym samym zadaniu wielu operacji, które zmieniają ten sam obiekt, ponieważ wynik może być nieprzewidywalny.

Optymalne pobieranie wyników

  • Nie sprawdzaj stanu zadania zbyt często, ponieważ może to spowodować błędy związane z przekroczeniem limitu.

  • Nie pobieraj więcej niż 1000 wyników na stronie. Serwer może zwrócić mniej wyników z powodu obciążenia lub innych czynników.

  • Kolejność wyników będzie taka sama jak kolejność przesyłania.

Dodatkowe wskazówki dotyczące korzystania

  • Możesz ustawić górny limit czasu, przez jaki zadanie zbiorcze może być wykonywane, zanim zostanie anulowane. Podczas tworzenia nowego zadania wsadowego ustaw w sekundach preferowany limit czasu w polu metadata.execution_limit_seconds. Jeśli pole metadata.execution_limit_seconds nie jest ustawione, nie ma domyślnego limitu czasu.

  • Zalecamy dodawanie nie więcej niż 1000 operacji na AddBatchJobOperationsRequest i używanie sequence_token do przesyłania pozostałych operacji do tego samego zadania. W zależności od zawartości operacji zbyt duża liczba operacji w jednym AddBatchJobOperationsRequest może spowodować błąd REQUEST_TOO_LARGE. Aby rozwiązać ten problem, zmniejsz liczbę operacji i ponów próbę wykonania AddBatchJobOperationsRequest.

Ograniczenia

  • Każde BatchJob obsługuje do miliona operacji.

  • Każde konto może mieć jednocześnie maksymalnie 100 aktywnych lub oczekujących zadań.

  • Zadania oczekujące od ponad 7 dni są automatycznie usuwane.

  • Od wersji 22 każde żądanie AddBatchJobOperations ma limit 10 tys. operacji zmiany na żądanie.

  • Od wersji 22 w przypadku pola page_size w ListBatchJobResultsRequest:

    • Jeśli page_size nie jest ustawione lub ma wartość 0, domyślnie przyjmuje maksymalną wartość 1000.
    • Jeśli page_size przekracza 1000 lub jest mniejsze niż 0, interfejs API zwraca błąd INVALID_PAGE_SIZE.
  • Od wersji 23 każde AddBatchJobOperationsRequest ma maksymalny rozmiar 41 937 920 bajtów. Jeśli przekroczysz ten limit, otrzymasz an INTERNAL_ERROR. Przed przesłaniem możesz określić rozmiar żądania i podjąć odpowiednie działania, jeśli jest ono zbyt duże.

    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);
    

Rozmiar pojedynczej operacji zmiany

Chociaż ogólny rozmiar żądania może być większy, rozmiar pojedynczej operacji zmiany w ramach zbioru jest ograniczony do 10 484 488 bajtów (ok.10,48 MB).