Pertimbangkan panduan ini saat menggunakan
BatchJobService.
Meningkatkan throughput
Sebaiknya gunakan lebih sedikit tugas yang lebih besar daripada banyak tugas yang lebih kecil.
Urutkan operasi yang diupload menurut jenis operasi. Misalnya, jika tugas Anda berisi operasi untuk menambahkan kampanye, grup iklan, dan kriteria grup iklan, urutkan operasi dalam upload Anda sehingga semua operasi kampanye berada di urutan pertama, diikuti oleh semua operasi grup iklan, dan terakhir semua operasi kriteria grup iklan.
Dalam operasi dengan jenis yang sama, mengelompokkannya berdasarkan resource induk dapat meningkatkan performa. Misalnya, jika Anda memiliki serangkaian objek
AdGroupCriterionOperation, akan lebih efisien untuk mengelompokkan operasi berdasarkan grup iklan, daripada mencampur operasi yang memengaruhi kriteria grup iklan di grup iklan yang berbeda.
Atomisitas dalam pemisahan batch
Google Ads API dapat membagi operasi dalam tugas batch yang dikirimkan menjadi sub-batch yang lebih kecil untuk diproses. Jika Anda tidak mengelompokkan operasi terkait, seperti modifikasi kelompok listing dalam AssetGroup dan AdGroup, secara berurutan dalam tugas batch, Google Ads API dapat membagi operasi ini menjadi sub-batch yang berbeda. Pemisahan ini dapat menyebabkan seluruh modifikasi gagal, atau membuat akun dalam status yang tidak konsisten.
Pengelompokan logis
AssetGroupListingGroupFilterOperation
mengelola grup listingan dalam AssetGroup, yang
umum dalam kampanye Performa Maksimal.
AdGroupCriterionOperation mengelola
grup listingan dalam AdGroup, yang umum dalam
kampanye Shopping standar. Keduanya digunakan untuk menentukan penargetan produk. Jika Anda membuat perubahan yang memengaruhi hierarki penargetan produk di kedua konteks, kelompokkan operasi ini secara berurutan dalam tugas batch Anda untuk memastikan operasi tersebut diterapkan bersama-sama.
Konsistensi data
Untuk mempertahankan konsistensi data dan mencegah update sebagian, tambahkan operasi grup listingan terkait secara berurutan ke tugas batch Anda. Pengurutan ini membantu mengelompokkannya ke dalam sub-batch atomik berdasarkan logika pemisahan batch API, yang mencegah akun Anda berada dalam status yang tidak konsisten.
Menghindari masalah konkurensi
Saat mengirimkan beberapa tugas serentak untuk akun yang sama, coba kurangi kemungkinan tugas beroperasi pada objek yang sama secara bersamaan, sambil mempertahankan ukuran tugas yang besar. Banyak tugas yang belum selesai, yang memiliki status
RUNNING, mencoba mengubah kumpulan objek yang sama, yang dapat menyebabkan kondisi seperti deadlock yang mengakibatkan perlambatan parah dan bahkan kegagalan tugas.Jangan kirimkan beberapa operasi yang mengubah objek yang sama dalam tugas yang sama, karena hasilnya dapat tidak terduga.
Mengambil hasil secara optimal
Jangan terlalu sering melakukan polling status tugas atau Anda berisiko mengalami error batas frekuensi.
Jangan ambil lebih dari 1.000 hasil per halaman. Server dapat menampilkan hasil yang lebih sedikit dari itu karena beban atau faktor lainnya.
Urutan hasil akan sama dengan urutan upload.
Panduan penggunaan tambahan
Anda dapat menetapkan batas atas untuk berapa lama tugas batch diizinkan berjalan sebelum dibatalkan. Saat membuat tugas batch baru, tetapkan kolom
metadata.execution_limit_secondske batas waktu pilihan Anda, dalam detik. Tidak ada batas waktu default jikametadata.execution_limit_secondstidak ditetapkan.Sebaiknya tambahkan tidak lebih dari 1.000 operasi per
AddBatchJobOperationsRequestdan gunakansequence_tokenuntuk mengupload operasi lainnya ke tugas yang sama. Bergantung pada konten operasi, terlalu banyak operasi dalam satuAddBatchJobOperationsRequestdapat menyebabkan errorREQUEST_TOO_LARGE. Anda dapat menangani error ini dengan mengurangi jumlah operasi dan mencoba kembaliAddBatchJobOperationsRequest.
Batasan
Setiap
BatchJobmendukung hingga satu juta operasi.Setiap akun dapat memiliki hingga 100 tugas aktif atau tertunda secara bersamaan.
Tugas tertunda yang lebih lama dari 7 hari akan otomatis dihapus.
Mulai v22, setiap permintaan
AddBatchJobOperationsmemiliki batas 10.000 operasi ubah per permintaan.Mulai v22, untuk kolom
page_sizediListBatchJobResultsRequest:- Jika
page_sizetidak ditetapkan atau 0, nilai defaultnya adalah maksimum 1.000. - Jika
page_sizemelebihi 1.000, atau kurang dari 0, API akan menampilkanINVALID_PAGE_SIZEerror.
- Jika
Mulai v23, setiap
AddBatchJobOperationsRequestmemiliki ukuran maksimum 41.937.920 byte. Jika Anda melebihi batas ini, Anda akan menerima anINTERNAL_ERROR. Anda dapat menentukan ukuran permintaan sebelum mengirimkannya dan mengambil tindakan yang sesuai jika terlalu besar.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.bytesizePHP
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);
Ukuran Operasi Ubah Tunggal
Meskipun permintaan keseluruhan dapat lebih besar, ukuran operasi ubah tunggal dalam batch dibatasi hingga 10.484.488 byte (sekitar 10,48 MB).