Transacciones en tablas de almacenamiento en Microsoft Fabric
Se aplica a:✅ punto de conexión de análisis SQL y Almacén de 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 almacenamiento mediante transacciones para agrupar los cambios.
- Por ejemplo, podría confirmar inserciones en varias tablas o en ninguna de ellas si se produce un error. Si cambia los detalles sobre un pedido de compra que afecta a tres tablas, puede agrupar esos cambios en una sola transacción. Eso significa que cuando se consultan esas tablas, o todas tienen los cambios o ninguna los tiene. Las transacciones son una práctica habitual cuando se necesita garantizar la coherencia de los datos en varias tablas.
Funcionalidades transaccionales
Las mismas funcionalidades transaccionales se admiten en el punto de conexión de análisis SQL de Microsoft Fabric, pero para consultas de solo lectura.
Las transacciones también pueden utilizarse para instrucciones SELECT secuenciales con el fin de garantizar que todas las tablas implicadas tengan datos del mismo momento. Por ejemplo, si una tabla tiene nuevas filas que ha añadido 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 durante la ejecución de la consulta y se aplica el aislamiento de instantánea.
Compatibilidad con transacciones de consulta entre bases de datos
El almacenamiento en Microsoft Fabric admite transacciones que se extienden a través de bases de datos que se encuentran dentro del mismo área de trabajo, incluida la lectura desde el punto de conexión de análisis SQL del lago de datos. Cada lago de datos tiene un punto de conexión de SQL Analytics de solo lectura. Cada área de trabajo puede tener más de un lago de datos.
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 distintos tipos de transacciones, todos los bloqueos se encuentran en el nivel de tabla:
Tipo de instrucción | Bloqueo empleado |
---|---|
SELECT | Estabilidad del esquema (Sch-S) |
INSERT | Con intención exclusiva (IX) |
DELETE | Con intención exclusiva (IX) |
UPDATE | Con intención exclusiva (IX) |
COPY INTO | Con intención exclusiva (IX) |
DDL | Modificación del esquema (Sch-M) |
Estos bloqueos impiden que se cambien conflictos como el esquema de una tabla mientras las filas se actualizan en una transacción.
Puede consultar bloqueos mantenidos 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 implica menos conflictos con otras transacciones, excepto con DDL, ya que el esquema de la tabla podría estar cambiando.
Registro de transacciones
El registro de transacciones en el almacenamiento en Microsoft Fabric es a nivel de archivo parquet porque los archivos parquet son inmutables (no se pueden cambiar). Una reversión da como resultado apuntar de nuevo 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.
- ALTER TABLE no se admite dentro de una transacción explícita.
- En este momento, hay una funcionalidad limitada de T-SQL en el almacenamiento. Consulte Área expuesta de T-SQL para obtener una lista de comandos T-SQL que no están disponibles actualmente.
- Si una transacción tiene inserción de datos en una tabla vacía y emite una instrucción SELECT antes de revertirla, las estadísticas generadas automáticamente pueden reflejar los datos no confirmados, lo que provoca estadísticas inexactas. Las estadísticas inexactas pueden dar lugar a planes de consulta no optimizados y tiempos de ejecución. Si revierte una transacción con SELECT después de una instrucción INSERT grande, actualice las estadísticas de las columnas mencionadas en su instrucción SELECT.