BatchJobService을 사용할 때는 다음 가이드라인을 고려하세요.
처리량 개선
작업을 작게 여러 개로 나누는 것보다 큰 작업을 몇 개로 나누는 것이 좋습니다.
업로드된 작업을 작업 유형별로 정렬합니다. 예를 들어 작업에 캠페인, 광고 그룹, 광고 그룹 기준을 추가하는 작업이 포함된 경우 업로드에서 모든 캠페인 작업이 먼저 오고, 그 뒤에 모든 광고 그룹 작업이 오고, 마지막으로 모든 광고 그룹 기준 작업이 오도록 작업을 정렬합니다.
동일한 유형의 작업 내에서 상위 리소스별로 그룹화하면 성능이 향상될 수 있습니다. 예를 들어
AdGroupCriterionOperation객체가 여러 개 있는 경우 서로 다른 광고 그룹의 광고 그룹 기준에 영향을 미치는 작업을 혼합하는 대신 광고 그룹별로 작업을 그룹화하는 것이 더 효율적일 수 있습니다.
일괄 분할의 원자성
Google Ads API는 제출된 일괄 작업의 작업을 처리하기 위해 더 작은 하위 일괄 작업으로 분할할 수 있습니다. AssetGroup 및 AdGroup 내의 목록 그룹 수정과 같은 관련 작업을 일괄 작업 내에서 연속적으로 그룹화하지 않으면 Google Ads API가 이러한 작업을 여러 하위 일괄로 분할할 수 있습니다. 이렇게 분리하면 전체 수정이 실패하거나 계정이 일관되지 않은 상태로 남을 수 있습니다.
논리적 그룹화
AssetGroupListingGroupFilterOperation는 AssetGroup 내에서 등록정보 그룹을 관리하며, 이는 실적 최대화 캠페인에서 흔히 사용됩니다.
AdGroupCriterionOperation는 AdGroup 내에서 등록정보 그룹을 관리합니다. 이는 표준 쇼핑 캠페인에서 일반적입니다. 둘 다 제품 타겟팅을 정의하는 데 사용됩니다. 두 컨텍스트 모두에서 제품 타겟팅 계층 구조에 영향을 미치는 변경사항을 적용하는 경우 일괄 작업에서 이러한 작업을 연속으로 그룹화하여 함께 적용되도록 합니다.
데이터 일관성
데이터 일관성을 유지하고 부분 업데이트를 방지하려면 관련 등록정보 그룹 작업을 일괄 작업에 연속으로 추가하세요. 이 순서는 API의 일괄 처리 분할 로직에 따라 원자적 하위 일괄 처리로 그룹화하는 데 도움이 되며, 이를 통해 계정이 일관되지 않은 상태로 남지 않게 됩니다.
동시 실행 문제 방지
동일한 계정에 대해 여러 동시 작업을 제출할 때는 작업 크기를 크게 유지하면서 동일한 객체에서 동시에 작업할 가능성을 줄이세요. 상태가
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부터
ListBatchJobResultsRequest의page_size필드에 적용되는 사항은 다음과 같습니다.page_size이 설정되지 않았거나 0인 경우 기본값은 최대값인 1,000입니다.page_size이 1,000을 초과하거나 0보다 작으면 API에서INVALID_PAGE_SIZE오류를 반환합니다.
각
AddBatchJobOperationsRequest의 최대 크기는 10,484,504바이트입니다. 이 한도를 초과하면INTERNAL_ERROR이 표시됩니다. 제출 전에 요청의 크기를 확인하고 너무 큰 경우 적절한 조치를 취할 수 있습니다.자바
static final int MAX_REQUEST_BYTES = 10_484_504; ... (code to get the request object) int sizeInBytes = request.getSerializedSize();Python
from google.ads.googleads.client import GoogleAdsClient MAX_REQUEST_BYTES = 10484504 ... (code to get the request object) size_in_bytes = request._pb.ByteSize()Ruby
require 'google/ads/google_ads' MAX_REQUEST_BYTES = 10484504 ... (code to get the request object) size_in_bytes = request.to_proto.bytesizePHP
use Google\Ads\GoogleAds\V16\Resources\Campaign; const MAX_REQUEST_BYTES = 10484504; ... (code to get the request object) $size_in_bytes = $campaign->byteSize() . PHP_EOL;.NET
using Google.Protobuf; const int MAX_REQUEST_BYTES = 10484504; ... (code to get the request object) int sizeInBytes = request.ToByteArray().Length;Perl
use Devel::Size qw(total_size); use constant MAX_REQUEST_BYTES => 10484504; ... (code to get the request object) my $size_in_bytes = total_size($request);