Cómo usar transacciones
Enviado por Helena • 26 de Diciembre de 2017 • 1.045 Palabras (5 Páginas) • 378 Visitas
...
Bloqueo
SQL Server lo usa para prevenir los problemas de concurrencia.
Los cuatro problemas de concurrencia que el bloqueo puede prevenir
[pic 66][pic 67][pic 68][pic 69][pic 70][pic 71][pic 72][pic 73][pic 74]
[pic 75]
[pic 76]
---------------------------------------------------------------
NIVELES DE AISLAMIENTO
[pic 77][pic 78][pic 79][pic 80][pic 81][pic 82][pic 83][pic 84]
En el método BeginTransaction, de una conexión, especifique el nivel de aislamiento. Para ello seleccione uno de los elementos de la enumeración IsolationLevel.
[pic 85][pic 86][pic 87][pic 88][pic 89]
Serializable
Todos los problemas de concurrencias serán prevenidos.
Cada transacción se aísla de la otra y la concurrencia está severamente restringida.
El servidor bloquea cada recurso, evitando que otras transacciones accedan al recurso.
Dado que cada transacción debe esperar a que la otra termine, entonces se deben ejecutar en serie, es decir una después de la otra.
Parece ser el mejor, a primera vista, pero puede ocasionar serios problemas de performance dado que cargamos al servidor con tiempos adicionales (overhead) para administrar los bloqueos.
---------------------------------------------------------------
ReadUnCommitted
Es la menos restrictiva.
Permite que ocurran los 4 problemas de concurrencia.
No bloque recursos ni respeta los bloqueos.
Por ello se ejecutan rápidamente, pero otras transacciones pueden estar trabajando sobre los mismos datos.
ReadCommitted
Es el predeterminado.
Es aceptable, para muchas transacciones, porque sólo previene de las lecturas sucias (dirty reads).
RepeteableRead
Permite más concurrencia que el Serializable, pero menos que ReadCommitted.
Snapshot
Este nivel es de SQL Server, que usa una característica llamada “versioning” de fila.
Con “versión de fila”, cualquier dato que es recuperado por una transacción con este nivel de aislamiento es consistente con los datos que existían, al momento de iniciar la transacción.
Para conseguir esto, SQL Server conserva un snapshot de la versión original de una fila, cada vez que esta es modificada.
No se requieren bloqueos, para operaciones de lectura. Esto mejora la concurrencia.
Sin embargo, se requieren recursos adicionales, y esto puede afectar la performance.
Entonces, en muchos casos, sólo se usa este nivel de aislamiento cuando la consistencia de datos es imperativa.
[pic 90]
---------------------------------------------------------------
APLICACIÓN DE TRANSFERENCIAS DE FONDOS QUE UTILIZA TRANSACCIONES
- Se solicita el número de factura o documento origen.
[pic 91][pic 92][pic 93]
- Se ingresa el monto a transferir, desde el documento origen, hacia el documento receptor o destino.
[pic 94][pic 95]
Se debe indicar el número del documento receptor
[pic 96]
Se ingresa el número del documento receptor
[pic 97][pic 98][pic 99]
La base de datos, antes de la transferencia
[pic 100][pic 101][pic 102][pic 103]
Se efectúa la transferencia
[pic 104][pic 105][pic 106][pic 107][pic 108]
[pic 109]
[pic 110][pic 111][pic 112]
[pic 113][pic 114][pic 115][pic 116][pic 117]
[pic 118]
[pic 119]
Base de datos
[pic 120][pic 121][pic 122]
[pic 123][pic 124]
[pic 125]
[pic 126]
---------------------------------------------------------------
CÓDIGO
Clases de BD
[pic 127][pic 128]
[pic 129][pic 130]
[pic 131]
[pic 132]
[pic 133]
[pic 134]
Clases de negocios
[pic 135]
INTERFAZ GRÁFICA DEL USUARIO
[pic 136]
[pic 137][pic 138]
[pic 139][pic 140]
[pic 141]
Continúa ….
[pic 142]
[pic 143][pic 144][pic 145]
---------------------------------------------------------------
...