Compartilhar 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.

Controlar o desempenho da verificação

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 duplicada mais antiga e verifica as próximas transações replicadas N-1, em que 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 verificação é muito alta, o uso de um valor mais alto maxtrans pode ser vantajoso, enquanto em casos que envolvem transações pouco replicadas ou relativamente grandes, uma configuração inferior 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 de verificação e a carga de trabalho. Quando a configuração do dynamicmaxtrans feed de alterações está habilitada, o Fabric ajusta dinamicamente o parâmetro maxtrans, garantindo o desempenho ideal da verificação.

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 runtime 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 sobre a configuração de transações máximas dinâmicas

O recurso de transações máximas dinâmicas é habilitado por padrão 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 de SQL do Azure.

Quando 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 impedir que essa fase seja executada por muito tempo, 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, a latência e outros fatores. Considere ativar o recurso maxtrans dinâmico quando a latência for maior do que o desejado e transaction_count em cada lote for maior que a configuração de limite inferior (200, por padrão). Isso pode ser monitorado usando a latency coluna dentro sys.dm_change_feed_log_scan_sessions ou usando o evento repl_logscan_dynamic_maxtrans estendido para ver se o current_maxtrans conjunto está chegando maxtrans . 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 ocorrer um tempo limite da verificação. Considere reduzir maxtrans ou desabilitar maxtrans dinâmicos usando sys.sp_help_change_feed_settings se você observar tempos limite frequentes.

Administrador de recursos para espelhamento do SQL Server

No SQL Server 2025, você pode criar um pool de administradores de recursos para gerenciar e limitar a carga de trabalho do espelhamento do Fabric em 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 do usuário. O administrador de recursos permite que você reserve ou limite vários recursos de servidor, incluindo a quantidade de CPU, memória e E/S física que as cargas de trabalho de consulta de usuário podem usar. Dessa forma, você pode proteger suas cargas de trabalho principais de negócios contra pressão da coleta de dados do feed de alterações do Fabric Mirroring. Para obter mais informações, consulte o Administrador de recursos.

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

  • Você pode escolher qualquer nome para o RESOURCE POOL.
  • Este script de exemplo configura um limite para um percentual desejado de CPU para permitir o espelhamento do Fabric. O exemplo a seguir usa 50 50%. Esse valor é a largura de banda média máxima da CPU que todas as solicitações no pool de recursos podem receber quando houver contenção de CPU. Use um valor mais baixo para limitar ainda mais o espelhamento do Fabric.
  • 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