Udostępnij za pomocą


Optymalizowanie wydajności dla dublowanych baz danych z programu SQL Server

Ten artykuł zawiera ważne kroki optymalizacji wydajności źródłowej bazy danych i dublowanej bazy danych z programu SQL Server w usłudze Microsoft Fabric.

Kontrolowanie wydajności skanowania

W przypadku włączenia dublowania w tabelach w bazie danych proces skanowania okresowo przechwytuje zmiany, zbierając dziennik transakcji. Ten proces rozpoczyna się od LSN najstarszej niereplikowanej transakcji zatwierdzonej i skanuje następne N-1 zreplikowane transakcje, gdzie N reprezentuje liczbę transakcji określonych przy użyciu parametru @maxtrans w .sys.sp_change_feed_configure_parameters Wartość maxtrans parametru wskazuje maksymalną liczbę transakcji do przetworzenia w każdym cyklu skanowania.

W sytuacjach, gdy opóźnienie skanowania jest bardzo wysokie, użycie wyższej maxtrans wartości może być korzystne, podczas gdy w przypadkach obejmujących rozrzedzonych lub stosunkowo dużych transakcji maxtrans niższe ustawienie może być preferowane. Funkcja dynamicznej maksymalnej liczby transakcji usprawnia ten proces, automatycznie określając optymalną maxtrans wartość podczas każdego skanowania na podstawie innych czynników, takich jak użycie dziennika, opóźnienie skanowania i obciążenie. Po włączeniu ustawienia zestawienia zmian sieć szkieletowa dynamicmaxtrans dynamicznie dostosowuje parametr maxtrans, zapewniając optymalną wydajność skanowania.

Sprawdź ustawienie funkcji dynamicznej maksymalnej liczby transakcji przy użyciu sys.sp_help_change_feed_settings lub użyj repl_logscan_dynamic_maxtrans zdarzenia rozszerzonego, aby monitorować wartości środowiska uruchomieniowego dla każdego skanowania.

Aby włączyć funkcję dynamicznej maksymalnej liczby transakcji, ustaw wartość @dynamicmaxtrans1. Przykład:

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

Aby zmodyfikować maksymalną i niższą granicę dla funkcji dynamicznej maksymalnej liczby transakcji, użyj odpowiednio wartości @maxtrans i @dynamicmaxtranslowerbound . Przykład:

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

Zagadnienia dotyczące dynamicznego ustawienia maksymalnej liczby transakcji

Funkcja dynamicznej maksymalnej liczby transakcji jest domyślnie włączona w programie SQL Server 2025. Funkcja dynamicznej maksymalnej liczby transakcji jest włączona i nie może być zarządzana ani wyłączona w usługach Azure SQL Database i Azure SQL Managed Instance.

Po włączeniu dynamicznego maxtrans dublowanie procesów do 10 000 transakcji (domyślnie) lub skonfigurowanej maksymalnej wartości transakcji w fazie skanowania dziennika. Aby zapobiec zbyt długiemu uruchomieniu tej fazy, wymuszany jest trzyminutowy limit czasu. Wszystkie transakcje przetwarzane przed wygaśnięciem limitu czasu zostaną opublikowane w dublowanej bazie danych, a pozostałe transakcje zostaną przechwycone podczas następnego skanowania.

Optymalne wartości funkcji dynamicznych maksymalnych transakcji różnią się w zależności od obciążenia, opóźnienia i innych czynników. Rozważ włączenie funkcji maxtrans dynamicznej, gdy opóźnienie jest wyższe niż wymagane, a transaction_count w każdej partii jest większe niż ustawienie niższej granicy (domyślnie 200). Można to monitorować przy użyciu kolumny w latency elem lub przy użyciu zdarzenia sys.dm_change_feed_log_scan_sessions rozszerzonegorepl_logscan_dynamic_maxtrans, aby sprawdzić, czy current_maxtrans zestaw osiąga maxtrans wartość . Jeśli opóźnienie jest nadal wysokie, rozważ zwiększenie górnego limitu maxtrans przy użyciu sys.sp_help_change_feed_settings.

Użyj zdarzenia repl_logscan_dynamic_maxtrans rozszerzonego, aby monitorować, czy przekroczenia limitu czasu występują często. Pole prev_phase2_scan_termination_reason będzie miało wartość LogScanTerminationReason_MaxScanDurationReached , gdy nastąpi przekroczenie limitu czasu skanowania. Rozważ obniżenie maxtrans lub wyłączenie dynamicznego maxtrans przy użyciu sys.sp_help_change_feed_settings , jeśli zauważysz częste przekroczenia limitu czasu.

Zarządca zasobów na potrzeby dublowania programu SQL Server

W programie SQL Server 2025 można utworzyć pulę zarządców zasobów, aby zarządzać obciążeniem dublowania sieci szkieletowej i ograniczyć je na serwerze SQL Server. Za pomocą zarządcy zasobów można zarządzać użyciem zasobów aparatu bazy danych i wymuszać zasady dla obciążeń użytkowników. Zarządca zasobów umożliwia rezerwowanie lub ograniczanie różnych zasobów serwera, w tym ilości procesora CPU, pamięci i fizycznego we/wy, których mogą używać obciążenia zapytań użytkownika. W ten sposób można chronić podstawowe obciążenia biznesowe przed presją zbierania danych zestawienia zmian w usłudze Fabric Mirroring. Aby uzyskać więcej informacji, zobacz Zarządca zasobów.

Aby rozpocząć konfigurowanie grup obciążeń w programie SQL Server 2025 for Fabric mirroring, użyj następującego przykładowego skryptu i instrukcji.

  • Możesz wybrać dowolną nazwę elementu RESOURCE POOL.
  • Ten przykładowy skrypt konfiguruje limit dla żądanego procentu procesora CPU, aby umożliwić dublowanie sieci szkieletowej. W poniższym przykładzie użyto 50 metody dla 50 procent. Ta wartość jest maksymalną średnią przepustowością procesora CPU, którą wszystkie żądania w puli zasobów mogą odbierać w przypadku rywalizacji o procesor CPU. Użyj niższej wartości, aby jeszcze bardziej ograniczyć dublowanie sieci szkieletowej.
  • Nazwy WORKLOAD GROUP muszą być zgodne z wartościami w przykładowym skryscie. Każda grupa obciążeń jest przeznaczony dla określonej fazy dublowania. Każda grupa obciążeń może znajdować się w tej samej lub innej puli w zależności od sposobu planowania pul i obciążeń zarządcy zasobów.
  • Przed skonfigurowaniem zarządcy zasobów po raz pierwszy w wystąpieniu programu SQL Server dokładnie zapoznaj się z dokumentacją zarządcy zasobów, przykładami i najlepszymi rozwiązaniami.
--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];

Aby zastosować zmiany i włączyć zarządcę zasobów, jak zwykle:

ALTER RESOURCE GOVERNOR RECONFIGURE