共用方式為


從 SQL Server 優化鏡像資料庫的效能

本文包含從 Microsoft Fabric 中 SQL Server 優化來源資料庫和鏡像資料庫效能的重要步驟。

控制掃描效能

在資料庫中的資料表上啟用鏡像時,掃描程序會透過收集交易記錄來定期擷取變更。 此程式會從最舊未複寫已認可交易的 LSN 開始,並掃描下一個 N-1 個複寫交易,其中 N 代表使用 中的@maxtrans參數指定的sys.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 資料庫 和 Azure SQL 受控執行個體中管理或停用。

啟用動態 maxtrans 時,鏡映會在日誌掃描階段處理最多 10,000 個交易 (依預設) 或配置的交易數目上限值。 為了防止此階段執行太長,會強制執行三分鐘的逾時。 逾時到期之前處理的任何交易都會發佈至鏡映資料庫,而其餘的交易將會在下次掃描期間擷取。

動態交易次數上限功能的最佳值會因工作負載、延遲和其他因素而異。 當延遲高於預期,且 transaction_count 每個批次中的延遲都大於下限設定 (預設為 200) 時,請考慮開啟動態 maxtrans 功能。 您可以使用擴充事件中的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 。 如果您發現頻繁逾時,請考慮使用 maxtranssys.sp_help_change_feed_settings 降低或停用動態 maxtrans。

SQL Server 鏡像的資源管理員

在 SQL Server 2025 中,你可以建立資源管理池來管理並限制 SQL Server 上 Fabric 鏡像的工作負載。 您可以使用資源控管來管理資料庫引擎資源耗用量,並強制執行使用者工作負載的原則。 資源控管可讓您保留或限制各種伺服器資源,包括使用者查詢工作負載可以使用的 CPU、記憶體和實體 I/O 數量。 如此一來,您就可以保護主要商務工作負載免受 Fabric 鏡像變更摘要資料收集的壓力。 如需詳細資訊,請參閱 資源管理員

若要開始在 SQL Server 2025 中設定工作負載群組以進行 Fabric 鏡像,請使用下列範例腳本和指示。

  • 您可以選擇 RESOURCE POOL.
  • 此範例指令碼會設定所需 CPU 百分比的上限,以允許 Fabric 鏡像。 下列範例會針對 50% 使用 50 。 此值是發生 CPU 爭用時,資源集區中所有要求都可以接收的最大平均 CPU 頻寬。 使用較低的值來進一步節流 Fabric 鏡像。
  • WORKLOAD GROUP名稱必須符合範例指令碼中的值。 每個工作負載群組都適用於鏡映的特定階段。 每個工作負載群組都可以位於相同或不同的集區中,視您規劃資源管理員集區和工作負載的方式而定。
  • 在 SQL Server 執行個體上首次設定資源控管之前,請仔細檢閱 資源控管文件、範例和最佳做法
--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