Академический Документы
Профессиональный Документы
Культура Документы
RESEÑA
Los DBA tienen la responsabilidad de mantener disponibles los servicios que presta
la base de datos, para ello deben controlar el comportamiento de los procesos que
acceden de forma concurrente sobre datos compartidos y los bloqueos que estos
generan sobre los mismos.
MODELOS DE CONCURRENCIA
El motor de base de datos admite dos diferentes modelos de concurrencia.
• Concurrencia pesimista
• Concurrencia Optimista
La pesimista utiliza bloqueos y la Optimista funciona sobre el supuesto de que los
conflictos de recursos entre multiples usuarios son improbables y permite la ejecucion
de transacciones sin usar bloqueos.
TRANSACCIONES (TRANSACT-SQL)
Una transacción es una unidad única de trabajo. Si una transacción tiene éxito, todas
las modificaciones de los datos realizadas durante la transacción se confirman y se
convierten en una parte permanente de la base de datos. Si una transacción encuentra
errores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos.
Una transacción es una unidad de trabajo que se compone de una o más instrucciones
SQL que realizan un conjunto de acciones relacionadas. Por ejemplo, la aplicación
podría utilizar una transacción para cambiar el número de CD de las existencias. El
proceso de actualizar la tabla o tablas aplicables y reportar la información actualizada
de regreso al usuario es tratado como una sola transacción. La transacción puede
incluir varias instrucciones SQL, realizando cada una de ellas una tarea
específica.Para que un conjunto de acciones califique como una transacción, debe
pasar la prueba ACID. ACID es el acrónimo comúnmente utilizado para referirse a
los nombres en inglés de las cuatro características de una transacción (Atomic,
Consistent, Isolated y Durable, respectivamente)
Transacciones explícitas
Cada transacción se inicia explícitamente con la instrucción BEGIN TRANSACTION
y se termina explícitamente con una instrucción COMMIT o ROLLBACK. Cuando
una conexión funciona en modo de transacciones implícitas, la instancia del motor de
base de datos inicia automáticamente una nueva transacción después de confirmar o
revertir la transacción actual. No tiene que realizar ninguna acción para delinear el
inicio de una transacción, solo tiene que confirmar o revertir cada transacción. El
modo de transacciones implícitas genera una cadena continua de transacciones.
Establezca el modo de transacción implícita a través de una función de la API o la
instrucción SET IMPLICIT_TRANSACTIONS ON de Transact-SQL.
Transacciones implícitas
Se inicia implícitamente una nueva transacción cuando se ha completado la anterior,
pero cada transacción se completa explícitamente con una instrucción COMMIT o
ROLLBACK.
Transacciones de ámbito de lote
Una transacción implícita o explícita de Transact-SQL que se inicia en una sesión de
MARS (conjuntos de resultados activos múltiples), que solo es aplicable a MARS, se
convierte en una transacción de ámbito de lote. Si no se confirma o revierte una
transacción de ámbito de lote cuando se completa el lote, SQL Server la revierte
automáticamente.
COMMIT Finaliza una transacción y permite completar todos los cambios a la base
de datos
Observe que la figura incluye cuatro de las instrucciones SQL relacionadas con las
transaccio-nes: SET TRANSACTION, START TRANSACTION, COMMIT y
ROLLBACK. Si se utiliza una instrucción SET TRANSACTION, ésta se ejecuta
antes de que la transacción inicie. Después de eso, una instrucción START
TRANSACTION inicia la transacción.
En el caso de SQL Server se utilizan seis instrucciones de Transact-SQL relacionadas
con las transacciones
COMMIT [WORK]: Pone fin con todo éxito a la transaccion que se inicio con la
instrucción BEGIN TRANSACTION y que todas las modificacines que la transaccion
se almacena en el disco (la clausula WORK es opcinal). Tambien se admite la
instruccin COMMIT TRANSACTION.
Ejemplo:
BEGIN TRANSACTION
INSERT INTO departamento (num_depto,nombre_depto)
VALUES('d4','Ventas');
SAVE TRANSACTION a;
INSERT INTO departamento (num_depto,nombre_depto)
VALUES('d5','Investigacion');
SAVE TRANSACTION b;
INSERT INTO departamento (num_depto,nombre_depto)
VALUES('d6','Administracion');
ROLLBACK TRANSACTION b;
INSERT INTO departamento (num_depto,nombre_depto)
VALUES('d7','Soporte');
ROLLBACK TRANSACTION a;
COMMIT TRANSACTION;
BLOQUEOS
NIVELES DE BLOQUEO
MODOS DE BLOQUEO
BIBLIOGRAFIA
https://docs.microsoft.com/es-es/sql/t-sql/language-elements/transactionstransact-
sql?view=sql-server-2017
https://docs.microsoft.com/es-es/sql/2014-toc/sql-server-transaction-lockingand-
row-versioning-guide?view=sql-server-2014
Oppel, A. (2010). Fundamentos de SQL. (3a. ed.) McGraw-Hill Interamericana. Página 379. Tomado
de http://www.ebooks7-24.com.bdigital.sena.edu.co