แชร์ผ่าน


เพิ่มประสิทธิภาพสําหรับฐานข้อมูลที่มิเรอร์จาก SQL Server

บทความนี้ประกอบด้วยขั้นตอนสําคัญในการเพิ่มประสิทธิภาพของฐานข้อมูลต้นทางและฐานข้อมูลที่มิเรอร์จาก SQL Server ใน Microsoft Fabric

ควบคุมประสิทธิภาพการสแกน

เมื่อเปิดใช้งานการมิเรอร์บนตารางในฐานข้อมูล กระบวนการสแกนจะบันทึกการเปลี่ยนแปลงเป็นระยะโดยการเก็บเกี่ยวบันทึกธุรกรรม กระบวนการนี้เริ่มต้นที่ LSN ของธุรกรรมที่ผูกมัดที่ไม่ได้จําลองแบบที่เก่าที่สุดและสแกนธุรกรรมที่จําลองแบบ N-1 ถัดไป โดยที่ N แสดงถึงจํานวนธุรกรรมที่ระบุโดยใช้พารามิเตอร์ใน@maxtranssys.sp_change_feed_configure_parameters maxtransค่าพารามิเตอร์ระบุจํานวนธุรกรรมสูงสุดที่จะประมวลผลในแต่ละรอบการสแกน

ในสถานการณ์ที่เวลาแฝงในการสแกนสูงมากการใช้ค่าที่สูงขึ้น maxtrans อาจเป็นประโยชน์ในขณะที่ในกรณีที่เกี่ยวข้องกับธุรกรรมที่จําลองแบบเบาบางหรือค่อนข้างใหญ่การตั้งค่าที่ต่ํากว่า maxtrans อาจดีกว่า คุณลักษณะธุรกรรมสูงสุดแบบไดนามิกช่วยเพิ่มความคล่องตัวให้กับกระบวนการนี้โดยกําหนดค่าที่เหมาะสมที่สุด maxtrans โดยอัตโนมัติระหว่างการสแกนแต่ละครั้งโดยพิจารณาจากปัจจัยอื่นๆ เช่น การใช้บันทึก เวลาแฝงในการสแกน และปริมาณงาน เมื่อ dynamicmaxtrans เปิดใช้งานการตั้งค่าการเปลี่ยนฟีด Fabric จะปรับพารามิเตอร์ maxtrans แบบไดนามิก เพื่อให้มั่นใจถึงประสิทธิภาพการสแกนที่เหมาะสมที่สุด

ตรวจสอบการตั้งค่าของคุณลักษณะธุรกรรมสูงสุดแบบไดนามิกด้วย sys.sp_help_change_feed_settings หรือใช้ repl_logscan_dynamic_maxtrans เหตุการณ์เพิ่มเติมเพื่อตรวจสอบค่ารันไทม์สําหรับการสแกนแต่ละครั้ง

เมื่อต้องการเปิดใช้งานคุณลักษณะธุรกรรมสูงสุดแบบไดนามิก ให้ตั้งค่าเป็น @dynamicmaxtrans1. ตัวอย่างเช่น:

USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
  @dynamicmaxtrans=1;

เมื่อต้องการปรับเปลี่ยนขอบเขตสูงสุดและขอบเขตล่างสําหรับคุณลักษณะธุรกรรมสูงสุดแบบไดนามิก ให้ใช้ @maxtrans และ ตามลําดับ@dynamicmaxtranslowerbound ตัวอย่างเช่น:

USE <Mirrored database name>
GO
EXECUTE sys.sp_change_feed_configure_parameters
  @dynamicmaxtrans=1
, @dynamicmaxtranslowerbound=5
, @maxtrans=5000;

ข้อควรพิจารณาสําหรับการตั้งค่าธุรกรรมสูงสุดแบบไดนามิก

คุณลักษณะธุรกรรมสูงสุดแบบไดนามิกจะเปิดใช้งานตามค่าเริ่มต้นใน SQL Server 2025 คุณลักษณะธุรกรรมสูงสุดแบบไดนามิกถูกเปิดใช้งาน และไม่สามารถจัดการหรือปิดใช้งานใน Azure SQL Database และ Azure SQL Managed Instance ได้

เมื่อเปิดใช้งาน maxtrans แบบไดนามิก การมิเรอร์จะประมวลผลธุรกรรมได้สูงสุด 10,000 รายการ (โดยค่าเริ่มต้น) หรือค่าธุรกรรมสูงสุดที่กําหนดค่าไว้ระหว่างขั้นตอนการสแกนบันทึก เพื่อป้องกันไม่ให้เฟสนี้ทํางานนานเกินไป จะมีการบังคับใช้การหมดเวลาสามนาที ธุรกรรมใดๆ ที่ประมวลผลก่อนหมดเวลาจะถูกเผยแพร่ไปยังฐานข้อมูลที่มิเรอร์ และธุรกรรมที่เหลือจะถูกบันทึกในระหว่างการสแกนครั้งต่อไป

ค่าที่เหมาะสมที่สุดสําหรับคุณลักษณะธุรกรรมสูงสุดแบบไดนามิกจะแตกต่างกันไปตามปริมาณงาน เวลาแฝง และปัจจัยอื่นๆ พิจารณาเปิดฟีเจอร์ maxtrans แบบไดนามิกเมื่อเวลาแฝงสูงกว่าที่ต้องการ และ transaction_count ในแต่ละแบทช์มากกว่าการตั้งค่าขอบเขตล่าง (200 ตามค่าเริ่มต้น) สามารถตรวจสอบได้โดยใช้คอลัมน์ใน latency หรือ sys.dm_change_feed_log_scan_sessions โดยใช้เหตุการณ์ที่ repl_logscan_dynamic_maxtrans ขยายเพื่อดูว่าถึง current_maxtrans ชุด maxtrans หรือไม่ หากเวลาแฝงยังคงสูง ให้พิจารณาเพิ่มmaxtransขีดจํากัดบนโดยใช้ sys.sp_help_change_feed_settings

ใช้เหตุการณ์ repl_logscan_dynamic_maxtrans เพิ่มเติมเพื่อตรวจสอบว่าการหมดเวลาเกิดขึ้นบ่อยหรือไม่ ฟิลด์ prev_phase2_scan_termination_reason จะมีค่า LogScanTerminationReason_MaxScanDurationReached เมื่อหมดเวลาจากการสแกนเกิดขึ้น พิจารณาลดหรือ maxtrans ปิดใช้งาน maxtrans แบบไดนามิกโดยใช้ sys.sp_help_change_feed_settings หากคุณสังเกตเห็นการหมดเวลาบ่อยครั้ง

ผู้ดูแลทรัพยากรสําหรับการสะท้อน SQL Server

ใน SQL Server 2025 คุณสามารถสร้างพูลผู้ควบคุมทรัพยากรเพื่อจัดการและจํากัดปริมาณงานของการมิเรอร์ Fabric บน SQL Server ของคุณได้ คุณสามารถใช้ผู้ดูแลทรัพยากรเพื่อจัดการการใช้ทรัพยากรของกลไกจัดการฐานข้อมูลและบังคับใช้นโยบายสําหรับปริมาณงานของผู้ใช้ ผู้ดูแลทรัพยากรช่วยให้คุณสามารถจองหรือจํากัดทรัพยากรเซิร์ฟเวอร์ต่างๆ รวมถึงจํานวน CPU, หน่วยความจํา และ I/O ทางกายภาพที่ปริมาณงานแบบสอบถามของผู้ใช้สามารถใช้ได้ ด้วยวิธีนี้ คุณสามารถปกป้องปริมาณงานทางธุรกิจหลักของคุณจากแรงกดดันจากการรวบรวมข้อมูลฟีดการเปลี่ยนแปลงของ Fabric Mirroring สําหรับข้อมูลเพิ่มเติม โปรดดู ผู้ว่าการทรัพยากร

เมื่อต้องการเริ่มต้นกําหนดค่ากลุ่มปริมาณงานใน SQL Server 2025 สําหรับการมิเรอร์ Fabric ให้ใช้สคริปต์ตัวอย่างและคําแนะนําต่อไปนี้

  • คุณสามารถเลือกชื่อใดก็ได้สําหรับไฟล์ RESOURCE POOL.
  • สคริปต์ตัวอย่างนี้กําหนดค่าขีดจํากัดสําหรับเปอร์เซ็นต์ที่ต้องการของ CPU เพื่อให้สามารถมิเรอร์ Fabric ได้ ตัวอย่างต่อไปนี้ใช้ 50 สําหรับ 50 เปอร์เซ็นต์ ค่านี้คือแบนด์วิดท์ CPU เฉลี่ยสูงสุดที่คําขอทั้งหมดในพูลทรัพยากรสามารถรับได้เมื่อมีการแย่งชิงของ CPU ใช้ค่าที่ต่ํากว่าเพื่อควบคุมการสะท้อนผ้าเพิ่มเติม
  • WORKLOAD GROUPชื่อต้องตรงกับค่าในสคริปต์ตัวอย่าง แต่ละกลุ่มปริมาณงานมีไว้สําหรับขั้นตอนเฉพาะของการมิเรอร์ กลุ่มปริมาณงานแต่ละกลุ่มสามารถอยู่ในพูลเดียวกันหรือต่างกัน ขึ้นอยู่กับวิธีที่คุณวางแผนพูลผู้ดูแลทรัพยากรและปริมาณงาน
  • ก่อนกําหนดค่าผู้ดูแลทรัพยากรเป็นครั้งแรกบนอินสแตนซ์ SQL Server ของคุณ ให้ตรวจสอบ เอกสาร ตัวอย่าง และแนวทางปฏิบัติที่ดีที่สุดของ Resource governor อย่างละเอียด
--Create resource pool for Fabric mirroring
CREATE RESOURCE POOL [ChangeFeedPool] WITH (MAX_CPU_PERCENT = 50);

--Create workload groups for Fabric mirroring. Do not modify.
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_snapshot_group] USING [ChangeFeedPool];
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_capture_group] USING [ChangeFeedPool];
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_publish_group] USING [ChangeFeedPool];
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_commit_group] USING [ChangeFeedPool];
CREATE WORKLOAD GROUP [x_ms_reserved_changefeed_notification_group] USING [ChangeFeedPool];

เมื่อต้องการใช้การเปลี่ยนแปลงและเปิดใช้งานผู้ดูแลทรัพยากรตามปกติ:

ALTER RESOURCE GOVERNOR RECONFIGURE