Transações em tabelas do Warehouse no Microsoft Fabric

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

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

Você pode modificar os dados armazenados em tabelas em um Warehouse usando transações para agrupar as alterações.

  • Por exemplo, você pode confirmar inserções em várias tabelas ou em nenhuma das tabelas se ocorrer um erro. Se estiver alterando detalhes de um pedido de compra que afeta três tabelas, é possível 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.

Funcionalidades transacionais

As mesmas funcionalidades transacionais são compatíveis com o ponto de extremidade de análise do 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 em uma transação aberta.

Importante

Somente o nível de isolamento de instantâneo é compatível com o Microsoft Fabric. Se você usar o T-SQL para alterar o nível de isolamento, a alteração será ignorada no momento da 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 workspace, incluindo a leitura do ponto de extremidade de análise do 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 de lago.

Suporte a DDL em transações

O Warehouse no Microsoft Fabric oferece suporte a 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 realizado
SELECT Esquema-Estabilidade (Sch-S)
INSERT Intenção Exclusiva (IX)
DELETE Intenção Exclusiva (IX)
UPDATE Intenção Exclusiva (IX)
COPY INTO Intenção Exclusiva (IX)
DDL Esquema-Modificação (Sch-M)

Esses bloqueios evitam conflitos, como a alteração do esquema de uma tabela enquanto as linhas estão sendo atualizadas em uma transação.

Você pode consultar os bloqueios mantidos atualmente com a 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 o retorno de um erro. 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 de parquet, o que significa menos conflitos com outras transações, exceto para DDL, porque o esquema da tabela pode estar mudando.

Registro em log de transações

O registro em log de transações no Warehouse no Microsoft Fabric está no nível do arquivo de parquet porque os arquivos de parquet são imutáveis (não podem ser alterados). Uma reversão resulta no apontamento para os arquivos de parquet anteriores. Os benefícios dessa alteração são que o registro em log 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 pontos de salvamento.
  • 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, a funcionalidade T-SQL do Warehouse é limitada. Consulte a Área da superfície TSQL para obter uma lista dos 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, produzindo 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 SELECT após um grande INSERT, atualize as estatísticas das colunas mencionadas em seu SELECT.