Vous êtes sur la page 1sur 9

Transacciones, bloqueos y control de concurrencia

PRESENTADO POR:

Andrés Alfonso Fernández Gallo

SERVICIO NACIONAL DE APRENDIZAJE SENA


ESPECIALIZACIÓN EN GESTION Y SEGURIDAD EN BASES DE DATOS
MODALIDAD VIRTUAL
2019
INTRODUCCIÓN

Con el gran aumento de la información en las instituciones y el número de usuarios


que acceden al mismo tiempo a la red, estas deben estar actualizándose en su
infraestructura tecnológica para poder desempeñar sus funciones de la manera más
segura, brindando a sus usuarios los recursos necesarios para la ejecución de sus
tareas. Igualmente, en el mercado se encuentra un sin número de software que
responden a los requerimientos deseados; es por ello que debemos ser muy
cuidadosos a la hora de adquirir un producto de este tipo
¿Cómo es el manejo transaccional en SMBD SQL Server?
Otra de las posibilidades que nos ofrece el SQL Server es utilizar transacciones
anidadas. Esto quiere decir que podemos tener transacciones dentro de
transacciones, es decir, podemos empezar una nueva transacción sin haber
terminado la anterior.
 ROLLBACK TRANSATION o ROLLBACK TRAN: fuerza que se deshaga la
transacción en caso de haber un problema o querer abandonarla. Cierra la
transacción.
 COMMIT TRANSACTION O COMMIT TRAN: confirma el conjunto de
operaciones convirtiendo los datos en definitivos. Marca el éxito de la
operación de bloque y cierra la transacción.

Los niveles de aislamiento que nos ofrece SQL Server son:

 SERIALIZABLE: No se permitirá a otras transacciones la inserción,


actualización o borrado de datos utilizados por nuestra transacción. Los
bloquea mientras dura la misma.
 REPEATABLE READ: Garantiza que los datos leídos no podrán ser
cambiados por otras transacciones, durante esa transacción.
 READ COMMITED: Una transacción no podrá ver los cambios de otras
conexiones hasta que no hayan sido confirmados o descartados.
 READ UNCOMMITTED: No afectan los bloqueos producidos por otras
conexiones a la lectura de datos.
 SNAPSHOT: Los datos seleccionados en la transacción se verán tal y como
estaban al comienzo de la transacción, y no se tendrán en cuenta las
actualizaciones que hayan sufrido por la ejecución de otras transacciones
simultáneas.
Ejemplo

Fuente: https://programacion.net/articulo/transacciones_en_sql_server_299

Transacciones y procedimientos almacenados

Cuando trabajamos con procedimientos almacenados debemos recordar que cada


procedimiento almacenado es una unidad. Cuando se ejecuta lo hace de manera
independiente de quien lo llama. Sin embargo, si tenemos un ROLLBACK TRAN
dentro de un procedimiento almacenado cancelaremos la transacción en curso,
pero si hay una transacción externa al procedimiento en el que estamos trabajando
se cancelará esa transacción externa.

Como definir transacciones

 De confirmación automática: el gestor de datos inicia una transacción


automáticamente por cada operación que actualice datos. De este modo
mantiene siempre la consistencia de la base de datos, aunque puede generar
bloqueos.
 Implícitas: cuando el gestor de datos comienza una transacción
automáticamente cada vez que se produce una actualización de datos, pero
el que dicha transacción se confirme o se deshaga, lo debe indicar el
programador.
 Explícitas: son las que iniciamos nosotros "a mano" mediante instrucciones
SQ. somos nosotros, los programadores, los que indicamos qué
operacio0nes va a abarcar.

¿Cuándo se genera un bloqueo en SQL Server?


El bloqueo, es esencial para el procesamiento exitoso de las transacciones que se
realizan en SQL Server y fue diseñada para poder lograr que SQL Server funcione
de forma ininterrumpida en un entorno con múltiples usuarios. El bloqueo llega a ser
la forma en la que SQL Server llega a administrar la ejecución de sus transacciones.
En su esencia, los bloqueos llegan a ser estructuras de memoria con propietarios,
tipos y la con la función de los recursos que se deben proteger. El bloqueo como
estructura de memoria contiene 96 bytes.

La prueba ACID (Atomicity Consistency Isolation Durability en inglés) tiene 4


requisitos que las transacciones deben aprobar exitosamente:

 Atomicidad: la cual requiere que la transacción involucre dos o más partes


discretas de información y que se realicen todas ellas o ninguna.
 Consistencia: que requiere que una transacción cree un estado válido con
datos nuevos, o se debe poder recuperar todos los datos al estado
existente antes de la ejecución de la transacción.
 Aislamiento: el cual requiere que la transacción este aún en ejecución y
que no se haya encargado de todos los datos, debe mantenerse de forma
aislada al resto de las transacciones.
 Durabilidad: consiste en que los datos encargados sean almacenados
mediante un método que logre mantener todos los datos en un estado
correcto y que estén disponibles para el usuario, aún en caso de fallos.

Modos de bloqueo

El modo de bloqueo incluye varios tipos de bloqueo aplicables a un recurso que


deba bloquearse:

 Exclusivo (X)
 Compartido (S)
 Actualización (U)
 Intento (I)
 Diagrama (Sch)
 Actualización masiva (BU)

Jerarquía de bloqueo

Fuente https://www.sqlshack.com/es/todo-sobre-el-bloqueo-en-sql-server/
¿Cómo se libera un bloqueo en SQL Server?

Paso 1
Abre la consola de SQL Server Enterprise Server. Ésta se encuentra en el menú
"Inicio" de Windows, bajo el menú "SQL Server". Haz clic en "SQL
Server Management Studio" para abrir la consola.

Paso 2
Escribe "sp_who 'active' " en el espacio de trabajo y presiona la tecla "Entrar". Esto
muestra todos los procesos, nombres de usuario y sesiones de ID asociadas a
ellos. Tienes que identificar cuál ID está provocando el bloqueo.

Paso 3
Identifica la ID de sesión para el registro bloqueado. Desde la lista que apareció en
el Paso 2, encuentra el usuario que tiene el bloqueo de registro y apunta la ID de
sesión. Esta ID la necesitarás en los siguientes pasos.

Paso 4
Escribe "Kill " en la consola. Esto removerá el bloqueo de registro en la fila de la
tabla. Una vez que el bloqueo haya sido removido, abre la tabla para comprobar
que el bloqueo fue eliminado de forma exitosa.

Paso 5
Detén y reinicia la aplicación que experimentó el problema al consultar la tabla.
Este paso es requerido si el bloqueo de registro estaba provocando problemas con
una aplicación de escritorio. Esto además ayuda a restablecer cualquier aplicación
que haya estado causando errores cuanto intentabas consultar el registro
bloqueado.
¿De qué forma se hace seguimiento a las transacciones en un determinado
momento?
La función de seguimiento de transacciones del agente de supervisión de Web
Response Time apareció en ITCAM for Transactions versión 7.2.0.1. Esta función
de seguimiento basado en agente se correlaciona con otros datos de seguimiento
basados en agente que se muestran en los espacios de trabajo de servidor,
componente, aplicación y transacción en Transaction Reporter.

Mediante esta función, puede ver qué aplicaciones y transacciones de HTTP y


HTTPS se comunican con varios otros componentes en el flujo de transacciones
supervisado. Este seguimiento se basa en instancias de transacciones individuales
mediante llamadas de la API de Transaction Tracking al recopilador de datos
de Transaction Tracking. Utilizando estos datos basados en instancias, puede
examinar datos de seguimiento y topologías para instancias de transacciones
individuales.

¿Cuándo múltiples usuarios acceden en un mismo instante de tiempo a un


recurso de la Base de Datos, como gestiona el motor la concurrencia?
El único enfoque consistente con una alta concurrencia y una alta escalabilidad es
el control de concurrencia optimista con versionamiento. El chequeo de versión
utiliza números de versión, o sellos de fecha (timestamps), para detectar
actualizaciones en conflicto y para prevenir la pérdida de actualizaciones. Hibernate
proporciona tres enfoques posibles de escribir código de aplicación que utilice
concurrencia optimista.

Vous aimerez peut-être aussi