Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ACID
ACID
Un nivel de aislamiento menor significa que los usuarios tienen un mayor acceso a
los datos simultáneamente, con lo que aumentan los efectos de la simultaneidad
que pueden experimentar, como las lecturas de datos sucios o la pérdida de
actualizaciones. Por el contrario, un nivel de aislamiento mayor reduce los tipos de
efectos de simultaneidad, pero requiere más recursos del sistema y aumenta las
posibilidades de que una transacción bloquee a otra. El nivel de aislamiento
apropiado depende del equilibrio entre los requisitos de integridad de los datos de
la aplicación y la sobrecarga de cada nivel de aislamiento. El nivel de aislamiento
superior, que es serializable, garantiza que una transacción recuperará exactamente
los mismos datos cada vez que repita una operación de lectura, aunque para ello
aplicará un nivel de bloqueo que puede afectar a los demás usuarios en los
sistemas multiusuario. El nivel de aislamiento menor, de lectura sin confirmar,
puede recuperar datos que otras transacciones han modificado pero no
confirmado. En este nivel se pueden producir todos los efectos secundarios de
simultaneidad, pero no hay bloqueos ni versiones de lectura, por lo que la
sobrecarga se reduce.
Notas
Lectura no confirmada Sí Sí Sí
Lectura confirmada no Sí Sí
Lectura repetible no no Sí
Nivel de aislamiento Lectura de datos sucios lectura no repetible Fantasma
Snapshot no no no
Serializable no no no
con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
con.setTransactionIsolation(SQLServerConnection.TRANSACTION_SNAPSHOT);
o puede utilizar:
JavaCopiar
con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED + 4094);
Para obtener más información sobre los niveles de aislamiento de SQL Server, vea
"Niveles de aislamiento en Motor de base de datos" en los Libros en pantalla
de SQL Server.
Ejemplo#
Leer comprometido
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
Lectura repetible
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
Nota: use esta opción solo cuando sea necesario, ya que es más probable que
cause una degradación del rendimiento de la base de datos, así como puntos
muertos que READ COMMITTED.
Instantánea
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
Especifica que los datos leídos por cualquier declaración en una transacción serán
la versión consistente de la transacción de los datos que existían al inicio de la
transacción, es decir, solo leerán los datos que se hayan confirmado antes de que
comience la transacción.
SNAPSHOT transacciones SNAPSHOT no solicitan ni causan ningún bloqueo en los
datos que se están leyendo, ya que solo está leyendo la versión (o instantánea) de
los datos que existían en el momento en que comenzó la transacción.
Una transacción que se ejecuta en el nivel de aislamiento SNAPSHOT lee solo sus
propios cambios de datos mientras se ejecuta. Por ejemplo, una transacción
podría actualizar algunas filas y luego leer las filas actualizadas, pero ese cambio
solo será visible para la transacción actual hasta que se confirme.