Sdílet prostřednictvím


Optimalizace výkonu pro zrcadlené databáze z SQL Serveru

Tento článek obsahuje důležité kroky pro optimalizaci výkonu zdrojové databáze a zrcadlené databáze z SQL Serveru v Microsoft Fabric.

Řízení výkonu kontroly

Pokud je u tabulek v databázi povoleno zrcadlení, proces prohledávání pravidelně zaznamenává změny získáváním transakčního protokolu. Tento proces začíná na LSN nejstarší neplicitované potvrzené transakce a prohledá další N-1 replikované transakce, kde N představuje počet transakcí zadaný pomocí parametru @maxtrans v sys.sp_change_feed_configure_parameters. Hodnota maxtrans parametru označuje maximální počet transakcí, které se mají zpracovat v každém cyklu kontroly.

V situacích, kdy je latence skenování velmi vysoká, může být použití vyšší maxtrans hodnoty výhodné, zatímco v případech zahrnujících řídké replikace nebo relativně velké transakce může být vhodnější nižší maxtrans nastavení. Funkce dynamických maximálních transakcí zjednodušuje tento proces tím, že automaticky určuje optimální maxtrans hodnotu během každé kontroly na základě dalších faktorů, jako je využití protokolu, latence prohledávání a úloha. dynamicmaxtrans Pokud je povolené nastavení kanálu změn, Fabric dynamicky upraví parametr maxtrans a zajistí optimální výkon kontroly.

Ověřte nastavení funkce dynamického maximálního počtu transakcí pomocí sys.sp_help_change_feed_settings nebo pomocí repl_logscan_dynamic_maxtrans rozšířené události monitorujte hodnoty modulu runtime pro každou kontrolu.

Chcete-li povolit funkci dynamických maximálních transakcí, nastavte @dynamicmaxtrans na 1hodnotu . Například:

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

Chcete-li upravit maximální a dolní mez pro funkci dynamických maximálních transakcí, použijte @maxtrans a @dynamicmaxtranslowerbound v uvedeném pořadí. Například:

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

Důležité informace o nastavení dynamického maximálního počtu transakcí

Funkce dynamického maximálního počtu transakcí je ve výchozím nastavení povolena v SQL Serveru 2025. Funkce dynamického maximálního počtu transakcí je povolená a nejde ji spravovat ani zakázat ve službě Azure SQL Database a ve službě Azure SQL Managed Instance.

Pokud je povolen dynamický maxtrans, zrcadlení zpracovává až 10 000 transakcí (ve výchozím nastavení) nebo nakonfigurovanou maximální hodnotu transakcí během fáze prohledávání protokolu. Pokud chcete zabránit příliš dlouhému spuštění této fáze, vynutí se časový limit za tři minuty. Všechny transakce zpracovávané před vypršením časového limitu se publikují do zrcadlené databáze a zbývající transakce se zachytí během další kontroly.

Optimální hodnoty pro funkci dynamických maximálních transakcí se liší podle úloh, latence a dalších faktorů. Zvažte zapnutí funkce dynamického maxtransu, pokud je latence vyšší, než je požadovaná a transaction_count v každé dávce je větší než nastavení s dolní vazbou (ve výchozím nastavení 200). To je možné monitorovat pomocí latency sloupce v sys.dm_change_feed_log_scan_sessions nebo pomocí rozšířené události repl_logscan_dynamic_maxtrans , abyste zjistili, current_maxtrans jestli se blíží k maxtrans sadě. Pokud je latence stále vysoká, zvažte zvýšení horního limitu maxtrans pomocí sys.sp_help_change_feed_settings.

Rozšířenou událost repl_logscan_dynamic_maxtrans použijte k monitorování, jestli dochází k častým vypršením časových limitů. prev_phase2_scan_termination_reason Pole bude mít hodnotuLogScanTerminationReason_MaxScanDurationReached, když dojde k vypršení časového limitu kontroly. Pokud si všimnete častých časových limitů, zvažte snížení maxtrans nebo zakázání dynamického maxtransu pomocí sys.sp_help_change_feed_settings .

Správce prostředků pro zrcadlení SQL Serveru

V SQL Serveru 2025 můžete vytvořit fond pro správu prostředků, který umožňuje řídit a omezit zatížení zrcadlení Fabric na vašem SQL Serveru. Správce prostředků můžete použít ke správě spotřeby prostředků databázového stroje a vynucování zásad pro uživatelské úlohy. Správce prostředků umožňuje rezervovat nebo omezit různé prostředky serveru, včetně množství procesoru, paměti a fyzických vstupně-výstupních operací, které můžou používat úlohy dotazů uživatelů. Tímto způsobem můžete chránit své primární obchodní úlohy před tlakem ze shromažďování dat kanálu změn Fabric Mirroringu. Další informace najdete v tématu Správce prostředků.

Pokud chcete začít konfigurovat skupiny úloh v SQL Serveru 2025 pro zrcadlení prostředků infrastruktury, použijte následující ukázkový skript a pokyny.

  • Můžete zvolit libovolný název .RESOURCE POOL
  • Tento ukázkový skript nakonfiguruje limit požadovaného procenta procesoru tak, aby umožňoval zrcadlení prostředků infrastruktury. Následující ukázka se používá 50 pro 50 procent. Tato hodnota je maximální průměrná šířka pásma procesoru, kterou můžou všechny požadavky ve fondu zdrojů přijímat, když dojde k kolizí procesoru. K dalšímu omezení zrcadlení prostředků infrastruktury použijte nižší hodnotu.
  • Názvy WORKLOAD GROUP musí odpovídat hodnotám v ukázkovém skriptu. Každá skupina úloh je určená pro konkrétní fázi zrcadlení. Každá skupina úloh může být ve stejném nebo jiném fondu v závislosti na tom, jak plánujete fondy a úlohy správce zdrojů.
  • Před první konfigurací správce prostředků na instanci SQL Serveru pečlivě zkontrolujte dokumentaci správce prostředků, příklady a osvědčené postupy.
--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];

Pokud chcete změny použít a povolit správce prostředků, jako obvykle:

ALTER RESOURCE GOVERNOR RECONFIGURE