Compartir vía


Configuración del nivel de aislamiento de transacción

Para establecer el nivel de aislamiento de transacción, una aplicación usa el atributo de conexión SQL_ATTR_TXN_ISOLATION. Si el origen de datos no admite el nivel de aislamiento solicitado, el controlador o el origen de datos pueden establecer un nivel superior. Para determinar qué niveles de aislamiento de transacción admite un origen de datos y cuál es el nivel de aislamiento predeterminado, una aplicación llama a SQLGetInfo con las opciones de SQL_TXN_ISOLATION_OPTION y SQL_DEFAULT_TXN_ISOLATION, respectivamente.

Los niveles más altos de aislamiento de transacciones ofrecen la mayor protección para la integridad de los datos de la base de datos. Se garantiza que las transacciones serializables no se ven afectadas por otras transacciones y, por lo tanto, se garantiza que mantienen la integridad de la base de datos.

Sin embargo, un nivel más alto de aislamiento de transacciones puede provocar un rendimiento más lento porque aumenta las posibilidades de que la aplicación tenga que esperar a que se liberen bloqueos en los datos. Una aplicación puede especificar un nivel inferior de aislamiento para aumentar el rendimiento en los casos siguientes:

  • Cuando se puede garantizar que no existen otras transacciones que puedan interferir con las transacciones de una aplicación. Esta situación solo se produce en circunstancias limitadas, como cuando una persona de una pequeña empresa mantiene archivos dBASE que contienen datos de personal en un equipo y no comparte estos archivos.

  • Cuando la velocidad es más crítica que la precisión y es probable que los errores sean pequeños. Por ejemplo, supongamos que una empresa realiza muchas ventas pequeñas y que las ventas grandes son poco frecuentes. Una transacción que calcula el valor total de todas las ventas abiertas podría usar de forma segura el nivel de aislamiento Read Uncommitted. Aunque la transacción incluiría pedidos que se abren o cierran y posteriormente se revierten, normalmente se cancelarían entre sí y la transacción sería mucho más rápida porque no se bloquea cada vez que encuentra este tipo de pedido.

Para más información, consulte Simultaneidad optimista.