Partilhar via


Otimizar o desempenho para bancos de dados espelhados do SQL Server

Este artigo inclui etapas importantes para otimizar o desempenho do banco de dados de origem e do banco de dados espelhado do SQL Server no Microsoft Fabric.

Controle o desempenho da varredura

Quando o espelhamento é habilitado em tabelas em um banco de dados, um processo de verificação captura periodicamente as alterações coletando o log de transações. Esse processo começa no LSN da transação confirmada não replicada mais antiga e verifica as próximas transações replicadas N-1, onde N representa o número de transações especificadas usando o @maxtrans parâmetro em sys.sp_change_feed_configure_parameters. O maxtrans valor do parâmetro indica o número máximo de transações a serem processadas em cada ciclo de verificação.

Em situações em que a latência de varredura é muito alta, usar um valor mais alto maxtrans pode ser vantajoso, enquanto em casos envolvendo transações pouco replicadas ou relativamente grandes, uma configuração mais baixa maxtrans pode ser preferível. O recurso de transações máximas dinâmicas simplifica esse processo determinando automaticamente o valor ideal maxtrans durante cada verificação com base em outros fatores, como o uso do log, a latência da varredura e a carga de trabalho. Quando a configuração de alimentação de dynamicmaxtrans alterações está ativada, o Fabric ajusta dinamicamente o parâmetro maxtrans, garantindo um desempenho de varredura ideal.

Verifique a configuração do recurso de transações máximas dinâmicas com sys.sp_help_change_feed_settings ou use repl_logscan_dynamic_maxtrans o evento estendido para monitorar os valores de tempo de execução para cada verificação.

Para habilitar o recurso de transações máximas dinâmicas, defina @dynamicmaxtrans como 1. Por exemplo:

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

Para modificar os limites máximo e inferior para o recurso de transações máximas dinâmicas, use @maxtrans e @dynamicmaxtranslowerbound respectivamente. Por exemplo:

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

Considerações para a configuração de transações máximas dinâmicas

A funcionalidade de transações máximas dinâmicas está ativada por defeito no SQL Server 2025. O recurso de transações máximas dinâmicas está habilitado e não pode ser gerenciado ou desabilitado no Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure.

Quando o maxtrans dinâmico está habilitado, o espelhamento processa até 10.000 transações (por padrão) ou o valor máximo de transações configurado durante a fase de verificação de log. Para evitar que essa fase seja muito longa, um tempo limite de três minutos é imposto. Todas as transações processadas antes do tempo limite expirar são publicadas no banco de dados espelhado e as transações restantes serão capturadas durante a próxima verificação.

Os valores ideais para o recurso de transações máximas dinâmicas variam de acordo com a carga de trabalho, latência e outros fatores. Considere ativar o recurso dinâmico maxtrans quando a latência for maior do que o desejado e em cada lote transaction_count for maior do que a configuração de limite inferior (200, por padrão). Isso pode ser monitorado usando a latency coluna em sys.dm_change_feed_log_scan_sessions ou usando o evento repl_logscan_dynamic_maxtrans estendido para ver se o current_maxtrans está atingindo o maxtrans conjunto. Se a latência ainda for alta, considere aumentar o maxtrans limite superior usando sys.sp_help_change_feed_settings.

Use o evento repl_logscan_dynamic_maxtrans estendido para monitorar se os tempos limite estão acontecendo com frequência. O campo prev_phase2_scan_termination_reason terá um valor LogScanTerminationReason_MaxScanDurationReached quando um tempo limite da verificação acontecer. Considere reduzir maxtrans ou desativar o maxtrans dinâmico usando sys.sp_help_change_feed_settings se notar tempos limite frequentes.

Administrador de recursos para espelhamento do SQL Server

No SQL Server 2025, pode criar um pool de governadores de recursos para gerir e limitar a carga de trabalho do espelhamento do Fabric no seu SQL Server. Você pode usar o administrador de recursos para gerenciar o consumo de recursos do Mecanismo de Banco de Dados e impor políticas para cargas de trabalho de usuários. O administrador de recursos permite reservar ou limitar vários recursos do servidor, incluindo a quantidade de CPU, memória e E/S física que as cargas de trabalho de consulta do usuário podem usar. Dessa forma, você pode proteger suas principais cargas de trabalho de negócios contra a pressão da coleta de dados do feed de alterações do Fabric Mirroring. Para obter mais informações, consulte Administrador de recursos.

Para começar a configurar grupos de carga de trabalho no SQL Server 2025 para espelhamento de malha, use o script e as instruções de exemplo a seguir.

  • Você pode escolher qualquer nome para o RESOURCE POOL.
  • Este script de exemplo configura um limite para uma porcentagem desejada de CPU para permitir o espelhamento de malha. O exemplo a seguir usa 50 para 50 por cento. Esse valor é a largura de banda média máxima da CPU que todas as solicitações no pool de recursos podem receber quando há contenção de CPU. Use um valor mais baixo para limitar ainda mais o espelhamento de malha.
  • Os WORKLOAD GROUP nomes devem corresponder aos valores no script de exemplo. Cada grupo de carga de trabalho é para uma fase específica de espelhamento. Cada grupo de carga de trabalho pode estar no mesmo pool ou em um pool diferente, dependendo de como você planeja seus pools e cargas de trabalho do administrador de recursos.
  • Antes de configurar o administrador de recursos pela primeira vez em sua instância do SQL Server, examine cuidadosamente a documentação, os exemplos e as práticas recomendadas do administrador de recursos.
--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];

Para aplicar as alterações e habilitar o administrador de recursos, como de costume:

ALTER RESOURCE GOVERNOR RECONFIGURE