Transações em tabelas de depósito no Microsoft Fabric

Aplica-se a:✅ ponto de extremidade de análise SQL e Warehouse no Microsoft Fabric

Semelhante ao seu comportamento no SQL Server, as transações permitem controlar a confirmação ou reversão de consultas de leitura e gravação.

Você pode modificar dados armazenados em tabelas em um depósito usando transações para agrupar alterações.

  • Por exemplo, você pode confirmar inserções em várias tabelas ou, nenhuma das tabelas se surgir um erro. Se você estiver alterando detalhes sobre uma ordem de compra que afeta três tabelas, poderá agrupar essas alterações em uma única transação. Isso significa que, quando essas tabelas são consultadas, todas elas têm as alterações ou nenhuma delas tem. As transações são uma prática comum para quando você precisa garantir que seus dados sejam consistentes em várias tabelas.

Recursos transacionais

Os mesmos recursos transacionais são suportados no ponto de extremidade de análise SQL no Microsoft Fabric, mas para consultas somente leitura.

As transações também podem ser usadas para instruções SELECT sequenciais para garantir que todas as tabelas envolvidas tenham dados do mesmo ponto no tempo. Por exemplo, se uma tabela tiver novas linhas adicionadas por outra transação, as novas linhas não afetarão as consultas SELECT dentro de uma transação aberta.

Importante

Somente o nível de isolamento de instantâneo é suportado no Microsoft Fabric. Se você usar o T-SQL para alterar seu nível de isolamento, a alteração será ignorada no tempo de Execução da Consulta e o isolamento de instantâneo será aplicado.

Suporte a transações de consulta entre bancos de dados

O Warehouse no Microsoft Fabric oferece suporte a transações que abrangem bancos de dados que estão dentro do mesmo espaço de trabalho, incluindo a leitura do ponto de extremidade de análise SQL do Lakehouse. Cada Lakehouse tem um ponto de extremidade de análise SQL somente leitura. Cada espaço de trabalho pode ter mais de uma casa no lago.

Suporte DDL em transações

O Warehouse no Microsoft Fabric suporta DDL, como CREATE TABLE, dentro de transações definidas pelo usuário.

Bloqueios para diferentes tipos de instruções

Esta tabela fornece uma lista de quais bloqueios são usados para diferentes tipos de transações, todos os bloqueios estão no nível da tabela:

Tipo de instrução Bloqueio tomado
SELECT Estabilidade do esquema (Sch-S)
INSERT Intenção Exclusiva (IX)
DELETE Intenção Exclusiva (IX)
UPDATE Intenção Exclusiva (IX)
COPY INTO Intenção Exclusiva (IX)
DDL Modificação de esquema (Sch-M)

Esses bloqueios impedem que conflitos como o esquema de uma tabela sejam alterados enquanto as linhas estão sendo atualizadas em uma transação.

Você pode consultar bloqueios atualmente mantidos com o modo de exibição de gerenciamento dinâmico (DMV) sys.dm_tran_locks.

Os conflitos de duas ou mais transações simultâneas que atualizam uma ou mais linhas em uma tabela são avaliados no final da transação. A primeira transação a ser confirmada é concluída com êxito e as outras transações são revertidas com um erro retornado. Esses conflitos são avaliados no nível da tabela e não no nível do arquivo de parquet individual.

As instruções INSERT sempre criam novos arquivos parquet, o que significa menos conflitos com outras transações, exceto DDL, porque o esquema da tabela pode estar mudando.

Registo de transações

O log de transações no Warehouse no Microsoft Fabric está no nível do arquivo parquet porque os arquivos parquet são imutáveis (não podem ser alterados). Uma reversão resulta em apontar de volta para os arquivos de parquet anteriores. Os benefícios dessa alteração são que o registro de transações e as reversões são mais rápidos.

Limitações

  • Não há suporte para transações distribuídas.
  • Não há suporte para salvar pontos.
  • Não há suporte para transações nomeadas.
  • Não há suporte para transações marcadas.
  • ALTER TABLE não é suportado em uma transação explícita.
  • No momento, há funcionalidade limitada do T-SQL no depósito. Consulte Área de superfície TSQL para obter uma lista de comandos T-SQL que não estão disponíveis no momento.
  • Se uma transação tiver inserção de dados em uma tabela vazia e emitir um SELECT antes de reverter, as estatísticas geradas automaticamente ainda poderão refletir os dados não confirmados, causando estatísticas imprecisas. Estatísticas imprecisas podem levar a planos de consulta e tempos de execução não otimizados. Se você reverter uma transação com SELECTs após um INSERT grande, atualize as estatísticas para as colunas mencionadas em seu SELECT.