En iyi uygulamalar ve sınırlamalar

BatchJobService özelliğini kullanırken bu yönergeleri göz önünde bulundurun.

İşleme kapasitesini artırma

  • Çok sayıda küçük iş yerine az sayıda büyük iş tercih edilir.

  • Yüklenen işlemleri işlem türüne göre sıralayın (atomik alt gruplar halinde art arda gruplandırılması gereken birbirine bağlı işlemler hariç). Örneğin, işiniz standart kampanyalar, reklam grupları ve reklam grubu ölçütleri ekleme işlemleri içeriyorsa yüklemenizdeki işlemleri, önce tüm kampanya işlemleri, ardından tüm reklam grubu işlemleri ve son olarak tüm reklam grubu ölçütü işlemleri gelecek şekilde sıralayın.

  • Aynı türdeki işlemleri üst kaynağa göre gruplandırmak performansı artırabilir. Örneğin, bir dizi AdGroupCriterionOperation nesneniz varsa işlemleri reklam grubuna göre gruplandırmak, farklı reklam gruplarındaki reklam grubu ölçütlerini etkileyen işlemleri karıştırmaktan daha verimlidir.

Toplu bölme işleminde bölünmezlik

Google Ads API, gönderilen bir toplu işteki işlemleri işlemek için daha küçük alt gruplara böler. Standart alt gruplar kısmi hata etkinleştirilmiş olarak yürütülürken birbirine bağlı belirli işlemler için alt gruplar tek bir işlem olarak atomik şekilde işlenir:

Hem AssetGroup hem de Maksimum Performans Campaign oluşturma alt grupları için (alt grup başına toplam 1.000 işleme kadar; 999'un üzerindeki tüm alt create işlemleri bir sonraki atomik olmayan alt gruba taşınır):

  • Üst create işlemi (AssetGroup veya Campaign üzerinde resource_name) ve ardışık alt create işlemleri (AssetGroupAsset üzerinde asset_group veya CampaignAsset üzerinde campaign) aynı negatif geçici ID'yi belirtmelidir.
  • Yeni Asset kaynakları için ön koşul niteliğindeki tüm AssetOperation (create) işlemlerini üst AssetGroupOperation veya CampaignOperation (create) işleminden önce yerleştirin. Bu işlemleri hiçbir zaman üst create ve alt bağlantı create işlemlerinin arasına yerleştirmeyin (bu, atomik alt grubu hemen kapatır ve üst kaynak oluşturma işlemini bağlı öğelerinden ayırır).

Atomik bir alt grup başarısız olduğunda, sorunlu işlemin BatchJobResult.status öğesi temel doğrulama hatasını içerir. Bu alt gruptaki diğer işlemler ise alt grubun işlem hatasıyla geri alınır. Temel neden hatasını belirlemek için aynı AdGroup, AssetGroup veya Campaign kimliğini paylaşan bitişik BatchJobResult girişlerini inceleyin.

Bu gruplardan herhangi birindeki ilgili işlemler art arda eklenmezse Google Ads API, bunları ayrı alt gruplara böler. Bu da değişikliğin minimum öğe şartlarını karşılayamamasına veya listeleme grubu ağaçlarının eksik kalmasına neden olur. Ayrıntılar için Toplu işlerde listeleme grubu filtrelerini kullanma ve Maksimum Performans toplu işleme başlıklı makaleleri inceleyin.

Mantıksal gruplandırma

Bir ürün hedefleme hiyerarşisini değiştirirken (Maksimum Performans kampanyalarında AssetGroupListingGroupFilterOperation veya Alışveriş kampanyalarında AdGroupCriterionOperation) ya da yeni bir AssetGroup veya Maksimum Performans Campaign oluştururken aynı üst kaynağı (AssetGroup, AdGroup veya Campaign) hedefleyen tüm işlemleri art arda gruplandırın. Bu sayede arka uç kilit çekişmesi azalır ve birbirine bağlı ağaçlar bir arada tutulur.

Veri tutarlılığı

Listeleme grubu filtre ağaçları ve Maksimum Performans öğesi koşulları her atomik alt toplu işlemin sonunda doğrulandığından, aynı üst kaynakta yapılan güncellemeleri bir işteki süreksiz aralıklara veya eşzamanlı işlere bölmeyin.

Eşzamanlılık sorunlarını önleme

  • Aynı hesap için aynı anda birden fazla iş gönderirken işlerin aynı anda aynı nesneler üzerinde çalışma olasılığını azaltın ve iş boyutlarını büyük tutun. Aynı nesne grubunu değiştirmeye çalışan, RUNNING durumundaki tamamlanmamış birçok iş, kilitlenmeye benzer durumlara yol açarak ciddi yavaşlamaya ve hatta iş hatalarına neden olabilir.

  • Aynı iş içinde aynı nesneyi değiştiren birden fazla işlem göndermeyin. Aksi takdirde sonuçlar öngörülemez olabilir.

Sonuçları en iyi şekilde alma

  • İş durumunu çok sık sorgulamayın. Aksi takdirde, sıklık sınırlaması hatalarıyla karşılaşabilirsiniz.

  • Sayfalandırma gidiş dönüşlerini en aza indirmek için ListBatchJobResults yöntemini çağırırken page_size parametresini ayarlamayın (veya maksimum değer olan 1000 olarak ayarlayın). response_content_type parametresini yalnızca uygulamanız döndürülen kaynak alanlarını resource_name değerinin ötesinde inceliyorsa MUTABLE_RESOURCE olarak ayarlayın.

  • Sonuçların sırası, yükleme sırasıyla aynıdır.

Ek kullanım kılavuzu

  • Toplu işlerin iptal edilmeden önce ne kadar süre çalıştırılabileceğine dair bir üst sınır belirleyebilirsiniz. Yeni bir toplu iş oluştururken metadata.execution_limit_seconds alanını tercih ettiğiniz zaman sınırına (saniye cinsinden) ayarlayın. metadata.execution_limit_seconds ayarlanmamışsa varsayılan bir süre sınırı yoktur.

  • Protokol sınırı istek başına 10.000 işlem olsa da AddBatchJobOperationsRequest başına en fazla 1.000 işlem eklemenizi ve işlemlerin geri kalanını aynı işe yüklemek için sequence_token kullanmanızı öneririz. İşlemlerin boyutuna bağlı olarak, tek bir AddBatchJobOperationsRequest içinde çok fazla işlem göndermek BatchJobError.REQUEST_TOO_LARGE hatasına neden olabilir. İşlem sayısını azaltıp AddBatchJobOperationsRequest işlemini yeniden deneyerek bu hatayı giderebilirsiniz.

Sınırlamalar

  • Her BatchJob en fazla bir milyon işlemi destekler. AddBatchJobOperations çağrılırken bu sınırın aşılması, ResourceCountLimitExceededError.RESOURCE_LIMIT hatası (ErrorDetails.resource_count_details içinde ResourceLimitType.BATCH_JOB_OPERATIONS_PER_JOB ile) döndürür.

  • Her hesapta aynı anda en fazla 100 etkin veya bekleyen iş olabilir. MutateBatchJob ile toplu iş oluştururken bu sınırın aşılması, ResourceCountLimitExceededError.RESOURCE_LIMIT hatası (ErrorDetails.resource_count_details içinde ResourceLimitType.BATCH_JOBS_PER_CUSTOMER ile) döndürür.

  • 7 günden eski bekleyen işler otomatik olarak kaldırılır.

  • Her AddBatchJobOperationsRequest, istek başına 10.000 değişiklik işlemiyle sınırlıdır. Tek bir istekte 10.000 işlem aşılırsa BatchJobError.REQUEST_TOO_LARGE hatası döndürülür.

  • ListBatchJobResultsRequest içindeki page_size alanı için:

  • Her AddBatchJobOperationsRequest en fazla 41.937.920 bayt boyutunda olabilir. Bu sınırı aşarsanız BatchJobError.REQUEST_TOO_LARGE hatası (veya taşıma katmanında reddedilirse INTERNAL_ERROR) alırsınız. Göndermeden önce isteğin serileştirilmiş boyutunu belirleyebilir ve çok büyükse uygun işlemi yapabilirsiniz:

    Java

    
    static final int MAX_REQUEST_BYTES = 41_937_920;
    
    // ... (code to get the AddBatchJobOperationsRequest object)
    
    int sizeInBytes = request.getSerializedSize();
    

    C#

    
    const int MAX_REQUEST_BYTES = 41_937_920;
    
    // ... (code to get the AddBatchJobOperationsRequest object)
    
    int sizeInBytes = request.CalculateSize();
    

    PHP

    
    const MAX_REQUEST_BYTES = 41937920;
    
    // ... (code to get the AddBatchJobOperationsRequest object)
    
    $size_in_bytes = $request->byteSize();
    

    Python

    
    MAX_REQUEST_BYTES = 41_937_920
    
    # ... (code to get the AddBatchJobOperationsRequest object)
    
    size_in_bytes = type(request).pb(request).ByteSize()
    

    Ruby

    
    MAX_REQUEST_BYTES = 41_937_920
    
    # ... (code to get the AddBatchJobOperationsRequest object)
    
    size_in_bytes = request.to_proto.bytesize
    

    Perl

    
    use JSON::XS;
    use constant MAX_REQUEST_BYTES => 41937920;
    
    # ... (code to get the AddBatchJobOperationsRequest object)
    
    # The Perl client library uses REST/JSON; UTF-8 JSON byte length provides a
    # conservative upper-bound estimate of the serialized request size.
    my $json_encoder = JSON::XS->new->utf8->convert_blessed;
    my $size_in_bytes = length($json_encoder->encode($request));
    

Tek bir değiştirme işleminin boyutu

Genel istek boyutu 41.937.920 bayta kadar çıkabilir ancak gruptaki tek bir MutateOperation öğesinin serileştirilmiş boyutu 10.484.504 bayt (10 MiB eksi 1.256 bayt) ile sınırlıdır. Bu sınırın aşılması BatchJobError.REQUEST_TOO_LARGE hatasına neden olur. BatchJobError.REQUEST_TOO_LARGE için referans dokümanlarında 10.484.504 baytlık eşik belirtilse de AddBatchJobOperations, üç istek eşiğinden herhangi biri (toplam 41.937.920 istek baytı, 10.484.504 tek işlem baytı veya çağrı başına 10.000 işlem) aşıldığında aynı hata kodunu döndürür. Hatanın message alanı, hangi sınırın ihlal edildiğini belirtir.