โปรดคำนึงถึงหลักเกณฑ์เหล่านี้เมื่อใช้ BatchJobService
ปรับปรุงอัตราการส่งข้อมูล
งานใหญ่ๆ จำนวนน้อยๆ ควรมากกว่างานเล็กๆ จำนวนมาก
ลำดับการดำเนินการที่อัปโหลดตามประเภทการดำเนินการ เช่น หากงานของคุณมีการดำเนินการเพื่อเพิ่มเกณฑ์สำหรับแคมเปญ กลุ่มโฆษณา และกลุ่มโฆษณา ให้จัดเรียงการดำเนินการในการอัปโหลดเพื่อให้การดำเนินการแคมเปญทั้งหมดเป็นลำดับแรก ตามด้วยการดำเนินการของกลุ่มโฆษณาทั้งหมด และสุดท้ายคือการดำเนินการสำหรับเกณฑ์ของกลุ่มโฆษณาทั้งหมด
ภายในการดำเนินการประเภทเดียวกัน จะช่วยปรับปรุงประสิทธิภาพโดยจัดกลุ่มตามทรัพยากรระดับบนสุดได้ ตัวอย่างเช่น หากคุณมีชุดของออบเจ็กต์
AdGroupCriterionOperation
อาจมีประสิทธิภาพมากกว่าในการจัดกลุ่มการดำเนินการตามกลุ่มโฆษณา แทนที่จะรวมการดำเนินการที่ส่งผลต่อเกณฑ์ของกลุ่มโฆษณาในกลุ่มโฆษณาต่างๆ
หลีกเลี่ยงปัญหาการเกิดขึ้นพร้อมกัน
เมื่อส่งงานหลายรายการพร้อมกันสำหรับบัญชีเดียวกัน ให้พยายามลดโอกาสที่งานจะดำเนินการบนออบเจ็กต์เดียวกันพร้อมกันแต่ยังคงรักษาขนาดงานขนาดใหญ่ไว้ งานที่ยังไม่เสร็จหลายงาน (ที่มีสถานะ
RUNNING
) ที่พยายามกลายพันธุ์ของออบเจ็กต์ชุดเดียวกันอาจทำให้เกิดภาวะเหมือนการติดตาย ส่งผลให้การทำงานช้าลงอย่างมากหรือแม้กระทั่งทำงานไม่สำเร็จอย่าส่งการดำเนินการหลายรายการที่เปลี่ยนแปลงออบเจ็กต์เดียวกันในงานเดียวกัน เนื่องจากผลลัพธ์จะคาดเดาไม่ได้
ดึงผลลัพธ์ออกมาดีที่สุด
อย่าสำรวจสถานะของงานบ่อยเกินไป ไม่เช่นนั้นคุณอาจเสี่ยงที่จะเกิดข้อผิดพลาดเกี่ยวกับขีดจำกัดอัตรา
อย่าดึงผลการค้นหาเกิน 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);