พิจารณาหลักเกณฑ์ต่อไปนี้เมื่อใช้
BatchJobService
ปรับปรุงปริมาณงาน
ระบบจะเลือกงานขนาดใหญ่จำนวนน้อยๆ มากกว่างานขนาดเล็กจำนวนมาก
จัดลำดับการดำเนินการที่อัปโหลดตามประเภทการดำเนินการ เช่น หากงานของคุณ มีการดำเนินการเพื่อเพิ่มแคมเปญ กลุ่มโฆษณา และเกณฑ์กลุ่มโฆษณา ให้จัดลำดับการดำเนินการในการอัปโหลดเพื่อให้การดำเนินการทั้งหมดของแคมเปญ อยู่ก่อน ตามด้วยการดำเนินการทั้งหมดของ กลุ่มโฆษณา และสุดท้ายคือการดำเนินการทั้งหมดของ เกณฑ์กลุ่มโฆษณา
ภายในกลุ่มการดำเนินการประเภทเดียวกัน การจัดกลุ่มตามทรัพยากรระดับบนอาจช่วยปรับปรุงประสิทธิภาพได้ เช่น หากคุณมีออบเจ็กต์
AdGroupCriterionOperationหลายรายการ การจัดกลุ่มการดำเนินการตามกลุ่มโฆษณาอาจมีประสิทธิภาพมากกว่าการผสมการดำเนินการที่ส่งผลต่อเกณฑ์กลุ่มโฆษณาในกลุ่มโฆษณาต่างๆ
ความเป็นหน่วยย่อยในการแยกงานแบบกลุ่ม
Google Ads API อาจแยกการดำเนินการในงานแบบกลุ่มที่ส่งเป็นชุดย่อยๆ ที่เล็กลงเพื่อทำการประมวลผล หากคุณไม่จัดกลุ่มการดำเนินการที่เกี่ยวข้อง เช่น
การแก้ไขกลุ่มรายชื่อภายใน AssetGroup
และ AdGroup ติดกันภายในงานแบบกลุ่ม
Google Ads API อาจแยกการดำเนินการเหล่านี้ออกเป็นชุดย่อยต่างๆ การแยกนี้อาจทำให้การแก้ไขทั้งหมดล้มเหลวหรือทำให้บัญชีอยู่ในสถานะที่ไม่สอดคล้องกัน
การจัดกลุ่มเชิงตรรกะ
AssetGroupListingGroupFilterOperation
จัดการกลุ่มรายชื่อภายใน AssetGroup ซึ่ง
พบได้ทั่วไปในแคมเปญ Performance Max
AdGroupCriterionOperation จัดการ
กลุ่มรายชื่อภายใน AdGroup ซึ่งพบได้ทั่วไปใน
แคมเปญ Shopping มาตรฐาน ทั้ง 2 อย่างใช้เพื่อกำหนดการกำหนดเป้าหมายผลิตภัณฑ์ หากคุณทำการเปลี่ยนแปลงที่ส่งผลต่อลำดับชั้นการกำหนดเป้าหมายผลิตภัณฑ์ในทั้ง 2 บริบท ให้จัดกลุ่มการดำเนินการเหล่านี้ติดกันในงานแบบกลุ่มเพื่อให้แน่ใจว่าระบบจะใช้การดำเนินการพร้อมกัน
ความสอดคล้องของข้อมูล
หากต้องการรักษาความสอดคล้องของข้อมูลและป้องกันการอัปเดตบางส่วน ให้เพิ่มการดำเนินการกลุ่มรายชื่อที่เกี่ยวข้องติดกันในงานแบบกลุ่ม การจัดลำดับนี้จะช่วยจัดกลุ่มการดำเนินการเป็นชุดย่อยๆ ที่เป็นหน่วยย่อยตามตรรกะการแยกงานแบบกลุ่มของ API ซึ่งจะป้องกันไม่ให้บัญชีอยู่ในสถานะที่ไม่สอดคล้องกัน
หลีกเลี่ยงปัญหาการทำงานพร้อมกัน
เมื่อส่งงานหลายรายการพร้อมกันสำหรับบัญชีเดียวกัน ให้พยายามลดโอกาสที่งานจะทำงานกับออบเจ็กต์เดียวกันในเวลาเดียวกัน ขณะเดียวกันก็รักษางานขนาดใหญ่ไว้ งานที่ยังไม่เสร็จจำนวนมากซึ่งมีสถานะเป็น
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 วันออกโดยอัตโนมัติ
ตั้งแต่เวอร์ชัน 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 ไบต์ หากคุณส่งคำขอที่มีขนาดเกินขีดจำกัดนี้ คุณจะได้รับ ข้อผิดพลาดINTERNAL_ERRORคุณสามารถตรวจสอบขนาดของคำขอก่อนส่งและดำเนินการที่เหมาะสมหากคำขอมีขนาดใหญ่เกินไปJava
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\V24\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.48 เมกะไบต์)