Delen via


Prestaties optimaliseren voor gespiegelde databases vanuit SQL Server

Dit artikel bevat belangrijke stappen voor het optimaliseren van de prestaties van de brondatabase en gespiegelde database vanuit SQL Server in Microsoft Fabric.

Belangrijk

Deze functie is beschikbaar als preview-versie.

Scanprestaties beheren

Wanneer spiegeling is ingeschakeld voor tabellen in een database, legt een scanproces periodiek wijzigingen vast door het transactielogboek te verzamelen. Dit proces begint bij de LSN van de oudste niet-gerepliceerde vastgelegde transactie en scant de volgende N-1 gerepliceerde transacties, waarbij N het aantal transacties vertegenwoordigt dat is opgegeven met behulp van de @maxtrans parameter in sys.sp_change_feed_configure_parameters. De maxtrans parameterwaarde geeft het maximum aantal transacties aan dat in elke scancyclus moet worden verwerkt.

In situaties waarin de scanlatentie zeer hoog is, kan het gebruik van een hogere maxtrans waarde voordelig zijn, terwijl in gevallen waarin een parserend gerepliceerde of relatief grote transactie een lagere maxtrans instelling de voorkeur kan hebben. De functie voor dynamische maximumtransacties stroomlijnt dit proces door automatisch de optimale maxtrans waarde tijdens elke scan te bepalen op basis van andere factoren zoals het logboekgebruik, de scanlatentie en de workload. Wanneer de instelling voor de dynamicmaxtrans wijzigingenfeed is ingeschakeld, past Fabric de parameter maxtrans dynamisch aan, waardoor de prestaties van de scan optimaal zijn.

Controleer de instelling van de functie voor dynamische maximumtransacties met sys.sp_help_change_feed_settings of gebruik repl_logscan_dynamic_maxtrans uitgebreide gebeurtenis om de runtimewaarden voor elke scan te bewaken.

Als u de functie voor dynamische maximumtransacties wilt inschakelen, stelt u deze in @dynamicmaxtrans op 1. Voorbeeld:

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

Als u de maximum- en ondergrenzen voor de functie voor dynamische maximumtransacties wilt wijzigen, gebruikt @maxtrans u respectievelijk @dynamicmaxtranslowerbound . Voorbeeld:

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

Overwegingen voor de instelling voor dynamische maximumtransacties

De functie voor dynamische maximumtransacties is standaard ingeschakeld in SQL Server 2025 (preview). De functie voor dynamische maximumtransacties is ingeschakeld en kan niet worden beheerd of uitgeschakeld in Azure SQL Database en Azure SQL Managed Instance.

Wanneer dynamische maxtrans is ingeschakeld, verwerkt spiegeling maximaal 10.000 transacties (standaard) of de geconfigureerde maximale transactiewaarde tijdens de logboekscanfase. Om te voorkomen dat deze fase te lang wordt uitgevoerd, wordt een time-out van drie minuten afgedwongen. Transacties die worden verwerkt voordat de time-out verloopt, worden gepubliceerd naar de gespiegelde database en resterende transacties worden vastgelegd tijdens de volgende scan.

De optimale waarden voor de functie voor dynamische maximumtransacties variƫren per workload, latentie en andere factoren. Overweeg om de dynamische maxtrans-functie in te schakelen wanneer de latentie hoger is dan gewenst en transaction_count in elke batch groter is dan de instelling voor de ondergrens (standaard 200). Dit kan worden bewaakt met behulp van de latency kolom in sys.dm_change_feed_log_scan_sessions of met behulp van de uitgebreide gebeurtenis repl_logscan_dynamic_maxtrans om te zien of de current_maxtrans set wordt bereikt maxtrans . Als latentie nog steeds hoog is, kunt u overwegen om de maxtrans bovengrens te verhogen met behulp van sys.sp_help_change_feed_settings.

Gebruik de uitgebreide gebeurtenis repl_logscan_dynamic_maxtrans om te controleren of er regelmatig time-outs optreden. Het veld prev_phase2_scan_termination_reason heeft een waarde LogScanTerminationReason_MaxScanDurationReached wanneer een time-out van de scan plaatsvindt. Overweeg dynamische maxtrans te verlagen maxtrans of uit te schakelen met behulp van sys.sp_help_change_feed_settings als u regelmatig time-outs ziet.

Resource governor voor SQL Server-spiegeling

In SQL Server 2025 (preview) kunt u een resource governor-pool maken om de workload van Fabric-spiegeling op uw SQL Server te beheren en te beperken. U kunt resource governor gebruiken om het resourceverbruik van database-engine te beheren en beleidsregels af te dwingen voor gebruikersworkloads. Met Resource Governor kunt u verschillende serverresources reserveren of beperken, waaronder de hoeveelheid CPU, geheugen en fysieke I/O die gebruikersqueryworkloads kunnen gebruiken. Op deze manier kunt u uw primaire bedrijfsworkloads beschermen tegen de druk van de dataverzameling van de wijzigingsfeed van Fabric Mirroring. Zie Resource Governor voor meer informatie.

Gebruik het volgende voorbeeldscript en de volgende instructies om aan de slag te gaan met het configureren van workloadgroepen in SQL Server 2025 for Fabric-spiegeling.

  • U kunt een willekeurige naam voor de RESOURCE POOL.
  • Met dit voorbeeldscript configureert u een limiet voor een gewenst cpu-percentage om fabricspiegeling toe te staan. In het volgende voorbeeld wordt 50 procent gebruikt 50 . Deze waarde is de maximale gemiddelde CPU-bandbreedte die alle aanvragen in de resourcegroep kunnen ontvangen wanneer er sprake is van CPU-conflicten. Gebruik een lagere waarde om Fabric-spiegeling verder te beperken.
  • De WORKLOAD GROUP namen moeten overeenkomen met de waarden in het voorbeeldscript. Elke workloadgroep is bedoeld voor een specifieke fase van spiegeling. Elke workloadgroep kan zich in dezelfde of een andere pool bevinden, afhankelijk van hoe u de resource governor-pools en -workloads plant.
  • Voordat u de resource governor voor de eerste keer configureert op uw SQL Server-exemplaar, raadpleegt u de documentatie, voorbeelden en best practices van Resource Governor zorgvuldig.
--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];

Om de wijzigingen toe te passen en de resource governor in te schakelen, zoals gebruikelijk:

ALTER RESOURCE GOVERNOR RECONFIGURE