Niveles De Asilamiento En Sybase Ase
Sybase soporta los siguientes niveles de aislamiento, entre ellos tenemos:
* Isolation Level 0, read uncommitted: Conocida como lectura no confirmada, permite que una tarea pueda leer los cambios no confirmados de los datos en la base de datos, esto quiere decir que la tarea puede mostrar los resultados y estos luego se deshacen.
T3 | Secuencia deEventos | T4 |
begin transactionupdate accountset balance = balance - 100where acct_number = 25rollback transaction | T3 y T4 inician. T3 actualiza balance para una cuenta luego resta $100. T4 ends.T3 rolls back, invalidando los resultados de T4. | begin transactionselect sum(balance)from accountwhere acct_number < 50commit transaction |
Si la transacción T4 consulta la tabla después T3actualiza, pero antes de que se revierta el cambio, el importe resultante de T4 esta desactivado de $100. La actualización realizada en la transacción T3 adquiere un bloqueo exclusivo en account. Sin embargo, la transacción T4 no intenta adquirir un bloqueo compartido antes de consultar a account, asi que no es bloqueada por T3. Lo contrario también es cierto. Si T4 empieza a consultar accounts entoncesel Isolation Level 0 empieza antes de T3. T3 podría adquirir su bloqueo exclusivo en accounts mientras T4 ejecuta la consulta, porque T4 no mantiene ningún bloqueo en las páginas que lee.
En el Isolation Level 0, Adaptive Server realiza dirty reads por:
* Permitir que las paginas o tablas tengan bloqueos exclusivos, es decir para leer los cambios no confirmados de los datos.
* No aplicarbloqueos compartidos en las filas, las páginas o tablas que se buscan.
El Isolation Level 0 puede mejorar el rendimiento de las aplicaciones al reducir la contención de bloqueo, pero puede imponer costes de ejecución de dos maneras:
* Las lecturas en caché realizan copias de los datos sucios que el Isolation Level 0 necesita leer de la aplicación.
* Si una lectura sucia está activa enuna fila, y los cambios en los datos de modo que la fila se mueve o se elimina, el análisis debe ser reiniciado, lo que puede implicar más lógico y físico de E / S
* Isolation Level 1, read committed: Conocida como lectura confirmada, evita lecturas de datos sucios. Las consultas de Level 1 puede leer sólo los cambios confirmados a los datos. En el Isolation Level 1, si una transacción tieneque leer una fila que ha sido modificado por una transacción incompleta en otra sesión, la transacción espera a que la primera transacción se completa (se confirme o se deshace.)
T5 | Secuencia de Eventos | T6 |
begin transactionupdate accountset balance = balance - 100where acct_number = 25rollback transaction | T5 y T6 inician. T5 actualiza account después de obtener el bloqueo exclusivo.T6intenta obtener el bloqueo compartido con una consulta a account, pero debe esperar a que T5 libere su bloqueo. T5 termina y libera su bloqueo exclusivo. T6 comparte cerradura, consultas a account y termina. | begin transactionselect sum(balance)from accountwhere acct_number < 50commit transaction |
Cuando se realiza una actualización en una transacción, T5 ejecuta, Adaptive Server aplicaun bloqueo exclusivo (a nivel de fila o el bloqueo a nivel de página si acct_number está indexado, de lo contrario, un bloqueo a nivel de tabla) en account.
Si T5 mantiene un bloqueo exclusivo de tabla,T6 tratando de adquirir su bloqueo de tabla compartido . Si T5 tiene página exclusiva o fila con bloqueos exclusivos, T6 puede comenzar a ejecutar, pero se bloquea cuando intenta adquirir un bloqueocompartido en una página o fila bloqueada por T5. La consulta que realiza T6 no se puede ejecutar (evitando la lectura no actualizada) hasta que el bloqueo exclusivo se libera, cuando T5 termina con la restitución.
Si bien la consulta en T6 mantiene su bloqueo compartido, otros procesos que necesitan bloqueos compartidos pueden acceder a los mismos datos, y un bloqueo de actualización también...
Regístrate para leer el documento completo.