Transacciones en tablas de almacenamiento en Microsoft Fabric

Se aplica a: Punto de conexión y almacenamiento de SQL en Microsoft Fabric

De forma similar a su comportamiento en SQL Server, las transacciones permiten controlar la confirmación o reversión de las consultas de lectura y escritura.

Puede modificar los datos almacenados en tablas de un almacén mediante transacciones para agrupar los cambios.

  • Por ejemplo, podría confirmar inserciones en varias tablas, o bien, ninguna de las tablas si surge un error. Si va a cambiar los detalles sobre un pedido de compra que afecta a tres tablas, puede agrupar esos cambios en una sola transacción. Esto significa que cuando se consultan esas tablas, todas tienen los cambios o ninguno de ellos. Las transacciones son una práctica común para cuando es necesario asegurarse de que los datos son coherentes en varias tablas.

Importante

Microsoft Fabric está actualmente en versión preliminar. Esta información está relacionada con un producto en versión preliminar que puede modificarse considerablemente antes de su lanzamiento. Microsoft no ofrece ninguna garantía, expresa o implícita, con respecto a la información que se ofrece aquí.

Funcionalidades transaccionales

Las mismas funcionalidades transaccionales se admiten en el punto de conexión de SQL en Microsoft Fabric, pero para las consultas de solo lectura.

Las transacciones también se pueden usar para instrucciones SELECT secuenciales para asegurarse de que las tablas implicadas tienen datos desde el mismo momento dado. Por ejemplo, si una tabla tiene filas nuevas agregadas por otra transacción, las nuevas filas no afectan a las consultas SELECT dentro de una transacción abierta.

Importante

Solo se admite el nivel de aislamiento de instantánea en Microsoft Fabric. Si usa T-SQL para cambiar el nivel de aislamiento, el cambio se omite en tiempo de ejecución de consultas y se aplica el aislamiento de instantáneas.

Compatibilidad con transacciones de consulta entre bases de datos

El almacenamiento en Microsoft Fabric admite transacciones que abarcan bases de datos que están dentro del mismo área de trabajo, incluida la lectura del punto de conexión SQL de Lakehouse. Cada instancia de Lakehouse tiene un punto de conexión de SQL y cada área de trabajo puede tener más de un lago.

Compatibilidad con DDL en transacciones

El almacenamiento en Microsoft Fabric admite DDL, como CREATE TABLE, dentro de transacciones definidas por el usuario.

Bloqueos para diferentes tipos de instrucciones

En esta tabla se proporciona una lista de los bloqueos que se usan para diferentes tipos de transacciones, todos los bloqueos están en el nivel de tabla:

Tipo de instrucción Bloqueo tomado
SELECT Schema-Stability (Sch-S)
INSERT Intención exclusiva (IX)
DELETE Intención exclusiva (IX)
UPDATE Intención exclusiva (IX)
COPY INTO Intención exclusiva (IX)
DDL Schema-Modification (Sch-M)

Estos bloqueos impiden que se cambien conflictos como el esquema de una tabla mientras se actualizan las filas en una transacción.

Puede consultar los bloqueos que se mantienen actualmente con la vista de administración dinámica (DMV) sys.dm_tran_locks.

Los conflictos de dos o más transacciones simultáneas que actualizan una o varias filas de una tabla se evalúan al final de la transacción. La primera transacción para confirmar se completa correctamente y las demás transacciones se revierten con un error devuelto. Estos conflictos se evalúan en el nivel de tabla y no en el nivel de archivo parquet individual.

Las instrucciones INSERT siempre crean nuevos archivos parquet, lo que significa menos conflictos con otras transacciones excepto para DDL porque el esquema de la tabla podría cambiar.

Registro de transacciones

El registro de transacciones en Warehouse en Microsoft Fabric se encuentra en el nivel de archivo parquet porque los archivos parquet son inmutables (no se pueden cambiar). Una reversión da como resultado que apunte a los archivos parquet anteriores. Las ventajas de este cambio son que el registro de transacciones y las reversiones son más rápidos.

Limitaciones

  • No se admiten las transacciones distribuidas.
  • No se admiten puntos de guardado.
  • No se admiten transacciones con nombre.
  • No se admiten transacciones marcadas.
  • En este momento, hay una funcionalidad limitada de T-SQL en el almacén. Consulte Área expuesta de TSQL para obtener una lista de comandos de T-SQL que no están disponibles actualmente.
  • Si una transacción tiene inserción de datos en una tabla vacía y emite un SELECT antes de revertir, las estadísticas generadas automáticamente pueden reflejar los datos no confirmados, lo que provoca estadísticas inexactas. Las estadísticas inexactas pueden provocar planes de consulta no optimizados y tiempos de ejecución. Si revierte una transacción con SELECT después de una inserción grande, es posible que desee actualizar las estadísticas de las columnas mencionadas en select.

Pasos siguientes