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

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