Dela via


Optimera prestanda för speglade databaser från SQL Server

Den här artikeln innehåller viktiga steg för att optimera prestanda för källdatabasen och speglad databas från SQL Server i Microsoft Fabric.

Viktigt!

Den här funktionen är i förhandsversion.

Kontrollera genomsökningsprestanda

När spegling är aktiverat på tabeller i en databas samlar en genomsökningsprocess regelbundet in ändringar genom att hämta transaktionsloggen. Den här processen börjar vid LSN för den äldsta oreplikerade bekräftade transaktionen och genomsöker de nästa N-1 replikerade transaktionerna, där N representerar antalet transaktioner som angetts med parametern @maxtrans i sys.sp_change_feed_configure_parameters. Parametervärdet maxtrans anger det maximala antalet transaktioner som ska bearbetas i varje genomsökningscykel.

I situationer där genomsökningssvarstiden är mycket hög kan det vara fördelaktigt att använda ett högre maxtrans värde, medan en lägre maxtrans inställning kan vara att föredra i fall som rör gles replikerade eller relativt stora transaktioner. Funktionen för dynamiska maximala transaktioner effektiviserar den här processen genom att automatiskt fastställa det optimala maxtrans värdet under varje genomsökning baserat på andra faktorer som logganvändning, svarstid för genomsökning och arbetsbelastning. dynamicmaxtrans När inställningen för ändringsflöde är aktiverad justerar Fabric dynamiskt parametern maxtrans, vilket säkerställer optimala genomsökningsprestanda.

Kontrollera inställningen för funktionen för dynamiska maximala transaktioner med sys.sp_help_change_feed_settings eller använd repl_logscan_dynamic_maxtrans utökad händelse för att övervaka körningsvärdena för varje genomsökning.

Om du vill aktivera funktionen för dynamiska maximala transaktioner anger du @dynamicmaxtrans till 1. Till exempel:

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

Om du vill ändra maximala och lägre gränser för funktionen för dynamiska maximala transaktioner använder du @maxtrans@dynamicmaxtranslowerbound respektive. Till exempel:

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

Överväganden för inställningen för dynamiska maximala transaktioner

Funktionen för dynamiska maximala transaktioner är aktiverad som standard i SQL Server 2025 (förhandsversion). Funktionen för dynamiska maximala transaktioner är aktiverad och kan inte hanteras eller inaktiveras i Azure SQL Database och Azure SQL Managed Instance.

När dynamisk maxtrans är aktiverat bearbetar spegling upp till 10 000 transaktioner (som standard) eller det konfigurerade maximala transaktionsvärdet under logggenomsökningsfasen. För att förhindra att den här fasen körs för länge tillämpas en tidsgräns på tre minuter. Alla transaktioner som bearbetas innan tidsgränsen upphör att gälla publiceras till den speglade databasen och återstående transaktioner registreras under nästa genomsökning.

De optimala värdena för funktionen för dynamiska maximala transaktioner varierar beroende på arbetsbelastning, svarstid och andra faktorer. Överväg att aktivera funktionen för dynamisk maxtrans när svarstiden är högre än önskat och transaction_count i varje batch är större än inställningen med lägre gräns (200 som standard). Detta kan övervakas genom latency i kolumnen sys.dm_change_feed_log_scan_sessions eller med den utökade händelsen repl_logscan_dynamic_maxtrans för att se om current_maxtrans uppnår maxtrans-gränsen. Om svarstiden fortfarande är hög kan du överväga att öka den maxtrans övre gränsen med hjälp av sys.sp_help_change_feed_settings.

Använd den utökade händelsen repl_logscan_dynamic_maxtrans för att övervaka om timeouts inträffar ofta. Fältet prev_phase2_scan_termination_reason har ett värde LogScanTerminationReason_MaxScanDurationReached när en timeout från genomsökningen inträffar. Överväg att maxtrans sänka eller inaktivera dynamisk maxtrans med hjälp av sys.sp_help_change_feed_settings om du märker frekventa timeouter.

Resursguvernör för SQL Server-spegling

I SQL Server 2025 (förhandsversion) kan du skapa en resursguvernörspool för att hantera och begränsa arbetsbelastningen för Fabric-spegling på SQL Server. Du kan använda resursguvernören för att hantera resursförbrukning för databasmotorn och tillämpa principer för användararbetsbelastningar. Med Resource Governor kan du reservera eller begränsa olika serverresurser, inklusive mängden processor, minne och fysisk I/O som arbetsbelastningar för användarfrågor kan använda. På så sätt kan du skydda dina primära affärsarbetsbelastningar mot tryck från Fabric Mirrorings datainsamling för ändringsflöde. Mer information finns i Resursguvernör.

Kom igång med att konfigurera arbetsbelastningsgrupper i SQL Server 2025 för Fabric-spegling med hjälp av följande exempelskript och instruktioner.

  • Du kan välja valfritt namn för RESOURCE POOL.
  • Det här exempelskriptet konfigurerar ett tak för en önskad procentandel CPU för att tillåta Fabric-spegling. Följande exempel använder 50 för 50 procent. Det här värdet är den maximala genomsnittliga CPU-bandbredden som alla begäranden i resurspoolen kan ta emot när det finns cpu-konkurrens. Använd ett lägre värde för att ytterligare begränsa Fabric-spegling.
  • Namnen WORKLOAD GROUP måste matcha värdena i exempelskriptet. Varje arbetsbelastningsgrupp är avsedd för en specifik fas av spegling. Varje arbetsbelastningsgrupp kan finnas i samma eller en annan pool beroende på hur du planerar dina resursguvernörspooler och arbetsbelastningar.
  • Innan du konfigurerar resursguvernören för första gången på SQL Server-instansen bör du noggrant granska dokumentationen, exemplen och metodtipsen för 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];

Så här tillämpar du ändringarna och aktiverar resursguvernören som vanligt:

ALTER RESOURCE GOVERNOR RECONFIGURE