แนวทางปฏิบัติแนะนำและข้อจำกัด

โปรดพิจารณาหลักเกณฑ์ต่อไปนี้เมื่อใช้ 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);