При использовании BatchJobService учитывайте следующие рекомендации.
Улучшить пропускную способность
- Предпочтительнее выполнять несколько крупных работ, чем несколько мелких. 
- Упорядочьте загруженные операции по типу. Например, если ваше задание содержит операции по добавлению кампаний, групп объявлений и критериев групп объявлений, упорядочите операции в загрузке так, чтобы все операции кампаний были первыми, затем все операции групп объявлений , а затем все операции критериев групп объявлений . 
- Группировка операций одного типа по родительскому ресурсу может повысить производительность. Например, если у вас есть серия объектов - AdGroupCriterionOperation, может быть эффективнее группировать операции по группам объявлений, чем смешивать операции, влияющие на критерии групп объявлений, в разных группах.
Избегайте проблем с параллелизмом
- При отправке нескольких одновременных заданий для одной учётной записи старайтесь снизить вероятность одновременного выполнения заданий с одними и теми же объектами, сохраняя при этом большой размер заданий. Многие незавершённые задания со статусом - RUNNING) пытаются изменить один и тот же набор объектов, что может привести к ситуациям, подобным взаимоблокировке, приводящим к серьёзному замедлению работы и даже сбоям заданий.
- Не отправляйте несколько операций, изменяющих один и тот же объект, в одно и то же задание, так как результат может быть непредсказуемым. 
Оптимальное получение результатов
- Не опрашивайте статус задания слишком часто, иначе вы рискуете столкнуться с ошибками, превышающими лимит. 
- Не загружайте более 1000 результатов на страницу. Сервер может вернуть меньшее количество результатов из-за нагрузки или других факторов. 
- Порядок результатов будет таким же, как и порядок загрузки. 
Дополнительные рекомендации по использованию
- Вы можете установить верхнюю границу времени выполнения пакетного задания до его отмены. При создании нового пакетного задания укажите в поле - metadata.execution_limit_secondsжелаемое ограничение по времени в секундах. Если- metadata.execution_limit_secondsне задано, ограничения по времени по умолчанию нет.
- Рекомендуется добавлять не более 1000 операций на один запрос - AddBatchJobOperationsRequestи использовать- sequence_tokenдля загрузки оставшихся операций в то же задание. В зависимости от содержимого операций, слишком большое количество операций в одном- AddBatchJobOperationsRequestможет привести к ошибке- REQUEST_TOO_LARGE. Эту ошибку можно устранить, уменьшив количество операций и повторив запрос- AddBatchJobOperationsRequest.
Ограничения
- Каждый - BatchJobподдерживает до одного миллиона операций.
- Каждая учетная запись может иметь до 100 активных или отложенных заданий одновременно. 
- Ожидающие задания старше 7 дней автоматически удаляются. 
- Начиная с версии 22 каждый запрос - AddBatchJobOperationsимеет ограничение в 10 000 операций мутации на запрос.
- Начиная с версии 22, для поля - page_sizeв- ListBatchJobResultsRequest:-  Если page_sizeне задан или равен 0, по умолчанию используется максимальное значение 1000.
-  Если page_sizeпревышает 1000 или меньше 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();- Питон- from google.ads.googleads.client import GoogleAdsClient MAX_REQUEST_BYTES = 10484504 ... (code to get the request object) size_in_bytes = request._pb.ByteSize()- Руби- require 'google/ads/google_ads' MAX_REQUEST_BYTES = 10484504 ... (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 = 10484504; ... (code to get the request object) $size_in_bytes = $campaign->byteSize() . PHP_EOL;- .СЕТЬ- using Google.Protobuf; const int MAX_REQUEST_BYTES = 10484504; ... (code to get the request object) int sizeInBytes = request.ToByteArray().Length;- Перл- 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);