권장사항 및 제한사항

BatchJobService를 사용할 때는 다음 가이드라인을 고려하세요.

처리량 개선

  • 작은 작업이 많은 것보다 큰 작업이 적은 것이 좋습니다.

  • 업로드된 작업을 작업 유형별로 정렬합니다. 예를 들어 작업에 캠페인, 광고그룹, 광고그룹 기준을 추가하는 작업이 포함되어 있는 경우 업로드에서 모든 캠페인 작업이 먼저 나오고, 그 뒤에 모든 광고그룹 작업, 마지막으로 모든 광고그룹 기준 작업이 나오도록 작업을 정렬합니다.

  • 동일한 유형의 작업 내에서 상위 리소스별로 그룹화하면 성능을 개선할 수 있습니다. 예를 들어 일련의 AdGroupCriterionOperation 객체가 있는 경우 서로 다른 광고그룹의 광고그룹 기준에 영향을 미치는 작업을 혼합하는 것보다 광고그룹별로 작업을 그룹화하는 것이 더 효율적입니다.

일괄 분할의 원자성

Google Ads API는 제출된 일괄 작업의 작업을 처리하기 위해 더 작은 하위 일괄 작업으로 분할할 수 있습니다. 일괄 작업 내에서 AssetGroupAdGroup 내의 등록정보 그룹 수정과 같은 관련 작업을 연속으로 그룹화하지 않으면 Google Ads API가 이러한 작업을 서로 다른 하위 일괄 작업으로 분할할 수 있습니다. 이러한 분리는 전체 수정이 실패하거나 계정이 일관되지 않은 상태로 남을 수 있습니다.

논리적 그룹화

AssetGroupListingGroupFilterOperation 은 실적 최대화 캠페인에서 흔히 사용되는 AssetGroup 내의 등록정보 그룹을 관리합니다. AdGroupCriterionOperation은 표준 쇼핑 캠페인에서 흔히 사용되는 AdGroup 내의 등록정보 그룹을 관리합니다. 둘 다 제품 타겟팅을 정의하는 데 사용됩니다. 두 컨텍스트 모두에서 제품 타겟팅 계층 구조에 영향을 미치는 변경사항을 적용하는 경우 일괄 작업에서 이러한 작업을 연속으로 그룹화하여 함께 적용되도록 합니다.

데이터 일관성

데이터 일관성을 유지하고 부분 업데이트를 방지하려면 관련 등록정보 그룹 작업을 일괄 작업에 연속으로 추가합니다. 이 순서는 API의 일괄 분할 로직에 따라 원자적 하위 일괄 작업으로 그룹화하는 데 도움이 되므로 계정이 일관되지 않은 상태로 남는 것을 방지합니다.

동시 실행 문제 방지

결과를 최적으로 검색

  • 작업 상태를 너무 자주 폴링하지 마세요. 속도 제한 오류가 발생할 위험이 있습니다.

  • 페이지당 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바이트입니다. 이 값을 초과하면 an INTERNAL_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.bytesize
    

    PHP

    
    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)로 제한됩니다.