โปรดพิจารณาหลักเกณฑ์ต่อไปนี้เมื่อใช้
BatchJobService
ปรับปรุงปริมาณข้อมูล
แนะนำให้ใช้งานขนาดใหญ่จำนวนน้อยแทนงานขนาดเล็กจำนวนมาก
จัดเรียงการดำเนินการที่อัปโหลดตามประเภทการดำเนินการ เช่น หากงานของคุณมีการดำเนินการเพื่อเพิ่มแคมเปญ กลุ่มโฆษณา และเกณฑ์กลุ่มโฆษณา ให้จัดเรียงการดำเนินการในการอัปโหลดเพื่อให้การดำเนินการกับแคมเปญทั้งหมดอยู่ก่อน ตามด้วยการดำเนินการกับกลุ่มโฆษณาทั้งหมด และสุดท้ายให้ใส่การดำเนินการกับเกณฑ์กลุ่มโฆษณาทั้งหมด
ภายในการดำเนินการประเภทเดียวกัน การรวมการดำเนินการเหล่านั้นตามทรัพยากรหลักจะช่วยปรับปรุงประสิทธิภาพได้ ตัวอย่างเช่น หากคุณมีออบเจ็กต์
AdGroupCriterionOperation
หลายรายการ การรวมการดำเนินการตามกลุ่มโฆษณาจะมีประสิทธิภาพมากกว่าการผสมการดำเนินการที่ส่งผลต่อเกณฑ์กลุ่มโฆษณาในกลุ่มโฆษณาต่างๆ
หลีกเลี่ยงปัญหาการทำงานพร้อมกัน
เมื่อส่งงานหลายรายการพร้อมกันสำหรับบัญชีเดียวกัน ให้พยายามลดโอกาสที่งานจะดำเนินการกับออบเจ็กต์เดียวกันในเวลาเดียวกัน ขณะเดียวกันก็รักษาขนาดงานขนาดใหญ่ไว้ งานจำนวนมากที่ยังไม่เสร็จซึ่งมีสถานะเป็น
RUNNING
พยายามที่จะเปลี่ยนชุดออบเจ็กต์เดียวกัน ซึ่งอาจทําให้เกิดเงื่อนไขที่คล้ายกับภาวะหยุดชะงักชั่วคราว (Deadlock) ซึ่งส่งผลให้เกิดความล่าช้าอย่างรุนแรงและอาจทําให้งานล้มเหลวได้อย่าส่งการดำเนินการหลายรายการที่เปลี่ยนรูปแบบออบเจ็กต์เดียวกันในภารกิจเดียวกัน เนื่องจากผลลัพธ์อาจคาดเดาไม่ได้
เรียกดูผลลัพธ์อย่างมีประสิทธิภาพสูงสุด
อย่าตรวจสอบสถานะงานบ่อยเกินไป ไม่เช่นนั้นคุณอาจเสี่ยงที่จะพบข้อผิดพลาดในการจำกัดอัตรา
อย่าดึงข้อมูลผลลัพธ์มากกว่า 1,000 รายการต่อหน้า เซิร์ฟเวอร์อาจแสดงผลลัพธ์น้อยกว่าจำนวนดังกล่าวเนื่องจากภาระงานหรือปัจจัยอื่นๆ
ลําดับผลลัพธ์จะเหมือนกับลําดับการอัปโหลด
คำแนะนำเพิ่มเติมในการใช้งาน
คุณสามารถกําหนดขีดจํากัดบนของระยะเวลาที่อนุญาตให้การทํางานแบบเป็นกลุ่มทํางานได้ก่อนที่จะถูกยกเลิก เมื่อสร้างงานกลุ่มใหม่ ให้ตั้งค่าช่อง
metadata.execution_limit_seconds
เป็นขีดจำกัดเวลาที่ต้องการเป็นวินาที ไม่มีขีดจำกัดเวลาเริ่มต้นหากไม่ได้ตั้งค่าmetadata.execution_limit_seconds
เราขอแนะนำให้เพิ่มการดำเนินการไม่เกิน 1,000 รายการต่อ
AddBatchJobOperationsRequest
ใช้sequence_token
เพื่ออัปโหลดการดำเนินการที่เหลือไปยังงานเดียวกัน การดำเนินการมากเกินไปในAddBatchJobOperationsRequest
รายการเดียวอาจทำให้เกิดข้อผิดพลาดREQUEST_TOO_LARGE
ทั้งนี้ขึ้นอยู่กับเนื้อหาของการดำเนินการ คุณจัดการข้อผิดพลาดนี้ได้โดยลดจำนวนการดำเนินการและลองAddBatchJobOperationsRequest
อีกครั้ง
ข้อจำกัด
BatchJob
แต่ละรายการรองรับการดำเนินการได้สูงสุด 1 ล้านรายการแต่ละบัญชีจะมีงานที่รอดําเนินการหรือทํางานอยู่ได้สูงสุด 100 รายการพร้อมกัน
ระบบจะนำงานที่รอดำเนินการซึ่งมีอายุมากกว่า 7 วันออกโดยอัตโนมัติ
AddBatchJobOperationsRequest
แต่ละรายการมีขนาดสูงสุด 10,484,504 ไบต์ หากเกินจำนวนนี้ คุณจะได้รับINTERNAL_ERROR
คุณสามารถกำหนดขนาดของคำขอก่อนส่งและทำตามขั้นตอนที่เหมาะสมหากคำขอมีขนาดใหญ่เกินไปJava
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.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;
.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);