Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
Noticias

Cambios en la configuración de aislamiento de transacciones de FireDAC en RAD Studio 10.4

Antes de RAD Studio 10.4, se confirmó la lectura de la opción predeterminada de aislamiento de transacciones para las conexiones FireDAc. Eso es TFDConnection.TxOptions.Isolation fue xiReadCommitted. Este fue el valor establecido para el componente y, al ser el predeterminado, no se envió a la base de datos. FireDAC simplemente asumió que el valor predeterminado en su configuración era el predeterminado de la base de datos y no envió explícitamente esta configuración de aislamiento a la base de datos al comienzo de una sesión. Por ejemplo, en MySQL el comando requerido es SET SESSION TRANSACTION ISOLATION LEVEL no se ejecutó si no se modificó el valor predeterminado. En este caso, el aislamiento de la transacción MySQL se mantuvo en el valor predeterminado de la base de datos, que es xiRepeatableRead, sin importar lo que se haya establecido en la configuración predeterminada de FireDAC.

Para solucionar este problema, decidimos que era mejor mantener el nivel de aislamiento predeterminado en xiUnspecified, lo que significa que si no necesita un nivel de aislamiento específico, se utiliza la configuración predeterminada para la base de datos específica; esta es la que ya está preestablecida int la base de datos y no es necesario que solicite la configuración. El nivel de aislamiento predeterminado está optimizado para una base de datos específica, ya que los valores predeterminados son diferentes y algunos de los niveles de aislamiento ni siquiera son compatibles con todos los motores de base de datos.

Si un desarrollador desea utilizar un nivel de aislamiento diferente del predeterminado utilizado por la base de datos, debe establecerse explícitamente en la configuración del componente o en el código. Si el desarrollador desea utilizar la base de datos predeterminada, no se requiere ningún código.

Estos son los niveles de aislamiento predeterminados de las principales bases de datos en términos de FireDAC; nuevamente, el valor de la propiedad es solo xiUnspecified:

DB2 – xiReadCommitted
InterBase y Firebird – xiSnapshot
MySQL y MariaDB – xiRepeatableRead
Oracle – xiReadCommitted
Microsoft SQL Server – xiReadCommitted
SQLite – xiSerializible
PostgreSQL – xiReadCommitted

Espero que esto ayude a aclarar el cambio y explicar cómo solucionarlo, cambiando el nivel de aislamiento de transacciones de su conexión FireDAC al que necesita específicamente, si es diferente del predeterminado de la base de datos. Este cambio no se incluyó en las notas de la versión de RAD Studio 10.4 y causó algunas preocupaciones (e informes de errores).


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

IN THE ARTICLES