Nesta página, descrevemos como ativar o isolamento da transação em snapshots de banco de dados do Microsoft SQL Server em jobs de replicação do Cloud Data Fusion.
Sobre os níveis de isolamento
Para capturar alterações nas tabelas de origem em um banco de dados do SQL Server, o
job de replicação usa um conector do Debezium. Durante a fase de
snapshots,
o Debezium adquire bloqueios de acordo com o
snapshot.isolation.mode
configurado.
A tabela a seguir compara os modos de isolamento compatíveis para jobs de replicação.
Modo de isolamento | Bloqueios adquiridos | Consistência de dados |
---|---|---|
read_uncommitted |
Nenhum | Número |
read_committed |
Bloqueios compartilhados em um lote de linhas de cada vez | Parcial. Um registro adicionado pode aparecer duas vezes: uma vez no snapshot inicial e outra na fase de streaming. |
repeatabe_read (padrão) |
Bloqueios compartilhados em todas as linhas | Parcial. Um registro adicionado pode aparecer duas vezes: uma vez no snapshot inicial e outra na fase de streaming. |
snapshot |
Nenhum | Cheio. |
exclusive |
Bloqueio exclusivo em todas as tabelas | Cheio. |
Para mais informações sobre os modos de isolamento, consulte Definir o nível de isolamento da transação.
Por padrão, o modo de isolamento de snapshot é repeatable_read
. Esse modo usa bloqueios compartilhados em todos os dados lidos durante o processo de snapshot. Isso evita que outras transações modifiquem as linhas existentes e pode permitir a inserção de novos registros. Consulte Encaminhamento de bloqueio.
A replicação com isolamento de snapshot é recomendada se já estiver ativada no banco de dados de origem porque fornece consistência completa de dados sem bloquear as tabelas. Se ele não estiver ativado, saiba mais sobre o impacto dos níveis de isolamento com base no controle de versão de linha no SQL Server Database Engine antes de ativá-lo.
Ativar o isolamento de snapshot em um job de replicação
Ative o isolamento de snapshot no banco de dados do SQL Server:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Substitua
DATABASE_NAME
pelo nome do banco de dados do SQL Server.Defina o argumento de ambiente de execução
snapshot.isolation.mode
comosnapshot
. Para mais informações, consulte Transmitir um argumento de ambiente de execução para um job de replicação.
A seguir
- Saiba mais sobre replicação.