BatchJobService를 사용할 때는 다음 가이드라인을 고려하세요.
처리량 개선
작은 작업이 많은 것보다 큰 작업이 적은 것이 좋습니다.
업로드된 작업을 작업 유형별로 정렬합니다. 예를 들어 작업에 캠페인, 광고그룹, 광고그룹 기준을 추가하는 작업이 포함되어 있는 경우 업로드에서 모든 캠페인 작업이 먼저 나오고, 그 뒤에 모든 광고그룹 작업, 마지막으로 모든 광고그룹 기준 작업이 나오도록 작업을 정렬합니다.
동일한 유형의 작업 내에서 상위 리소스별로 그룹화하면 성능을 개선할 수 있습니다. 예를 들어 일련의
AdGroupCriterionOperation객체가 있는 경우 서로 다른 광고그룹의 광고그룹 기준에 영향을 미치는 작업을 혼합하는 것보다 광고그룹별로 작업을 그룹화하는 것이 더 효율적입니다.
일괄 분할의 원자성
Google Ads API는 제출된 일괄 작업의 작업을 처리하기 위해 더 작은 하위 일괄 작업으로 분할할 수 있습니다. 일괄 작업 내에서 AssetGroup 및 AdGroup 내의 등록정보 그룹 수정과 같은 관련 작업을 연속으로 그룹화하지 않으면 Google Ads API가 이러한 작업을 서로 다른 하위 일괄 작업으로 분할할 수 있습니다. 이러한 분리는 전체 수정이 실패하거나 계정이 일관되지 않은 상태로 남을 수 있습니다.
논리적 그룹화
AssetGroupListingGroupFilterOperation
은 실적 최대화 캠페인에서 흔히 사용되는 AssetGroup 내의 등록정보 그룹을 관리합니다.
AdGroupCriterionOperation은 표준 쇼핑 캠페인에서 흔히 사용되는 AdGroup 내의 등록정보 그룹을 관리합니다. 둘 다 제품 타겟팅을 정의하는 데 사용됩니다. 두 컨텍스트 모두에서 제품 타겟팅 계층 구조에 영향을 미치는 변경사항을 적용하는 경우 일괄 작업에서 이러한 작업을 연속으로 그룹화하여 함께 적용되도록 합니다.
데이터 일관성
데이터 일관성을 유지하고 부분 업데이트를 방지하려면 관련 등록정보 그룹 작업을 일괄 작업에 연속으로 추가합니다. 이 순서는 API의 일괄 분할 로직에 따라 원자적 하위 일괄 작업으로 그룹화하는 데 도움이 되므로 계정이 일관되지 않은 상태로 남는 것을 방지합니다.
동시 실행 문제 방지
동일한 계정에 대해 여러 동시 작업을 제출할 때는 작업 크기를 크게 유지하면서 동시에 동일한 객체에서 작업이 실행될 가능성을 줄이세요. `RUNNING` 상태인 완료되지 않은 작업이 많으면 동일한 객체 집합을 변경하려고 시도하여 교착 상태와 유사한 조건이 발생하여 심각한 속도 저하와 작업 실패까지 이어질 수 있습니다.
RUNNING결과를 예측할 수 없으므로 동일한 작업에서 동일한 객체를 변경하는 여러 작업을 제출하지 마세요.
결과를 최적으로 검색
작업 상태를 너무 자주 폴링하지 마세요. 속도 제한 오류가 발생할 위험이 있습니다.
페이지당 1,000개가 넘는 결과를 검색하지 마세요. 서버는 부하 또는 기타 요인으로 인해 그보다 적은 결과를 반환할 수 있습니다.
결과 순서는 업로드 순서와 동일합니다.
추가 사용 가이드라인
일괄 작업이 취소되기 전에 실행될 수 있는 최대 시간을 설정할 수 있습니다. 새 일괄 작업을 만들 때는
metadata.execution_limit_seconds필드를 원하는 시간 제한(초)으로 설정합니다.metadata.execution_limit_seconds가 설정되지 않은 경우 기본 시간 제한은 없습니다.AddBatchJobOperationsRequest당 1,000개가 넘는 작업을 추가하지 않고sequence_token을 사용하여 나머지 작업을 동일한 작업에 업로드하는 것이 좋습니다. 작업의 콘텐츠에 따라 단일AddBatchJobOperationsRequest에 너무 많은 작업이 있으면REQUEST_TOO_LARGE오류가 발생할 수 있습니다. 작업 수를 줄이고AddBatchJobOperationsRequest를 재시도하여 이 오류를 처리할 수 있습니다.
제한사항
각
BatchJob은 최대 100만 개의 작업을 지원합니다.각 계정은 동시에 최대 100개의 활성 또는 대기 중인 작업을 보유할 수 있습니다.
7일이 지난 대기 중인 작업은 자동으로 삭제됩니다.
v22부터 각
AddBatchJobOperations요청에는 요청당 10,000개의 변경 작업 한도가 있습니다.v22부터
page_size필드에 대해ListBatchJobResultsRequest다음이 적용됩니다.page_size가 설정되지 않았거나 0인 경우 기본값은 최대 1,000입니다.page_size가 1,000을 초과하거나 0보다 작은 경우 API는INVALID_PAGE_SIZE오류를 반환합니다.
v23부터 각
AddBatchJobOperationsRequest의 최대 크기는 41,937,920바이트입니다. 이 값을 초과하면 anINTERNAL_ERROR이 표시됩니다. 제출하기 전에 요청의 크기를 확인하고 너무 큰 경우 적절한 조치를 취할 수 있습니다.자바
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\V16\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);
단일 변경 작업 크기
전체 요청은 더 클 수 있지만 일괄 처리 내의 단일 변경 작업 크기는 10,484,488바이트 (약 10.48MB)로 제한됩니다.