Está en la página 1de 13

INSTITUTO

TECNOLGICO DE
TAPACHULA ALUMNO:
ERICK JONATHAN BURGUETE LOPEZ

DOCENTE:
MARIO FRANCISCO FONSECA LOZADA

MATERIA:
TALLER DE BASE DE DATOS

TRABAJO:
RESUMEN DE LA UNIDAD 4 CONCURRENCIA

CARRERA:
ING. EN SISTEMAS COMPUTACIONALES

SEMESTRE:
5

TAPACHULA, CHIAPAS; A 29 DE OCTUBRE DEL 2017


ACTIVIDAD 4.1 ELABORAR UN
RESUSMEN DE LOS SUBTEMAS
4.1 CONSEPTOS

Los sistemas que tratan el problema de control de concurrencia permiten que sus
usuarios asuman que cada una de sus aplicaciones se ejecuta atmicamente, como si
no existieran otras aplicaciones ejecutndose concurrentemente. Esta abstraccin de
una ejecucin atmica y confiable de una aplicacin se conoce como una transaccin.
Un algoritmo de control de concurrencia asegura que las transacciones se ejecuten
atmicamente controlando la intercalacin de transacciones concurrentes, para dar la
ilusin de que las transacciones se ejecutan serial mente, una despus de la otra, sin
ninguna intercalacin.

Las ejecuciones intercaladas cuyos efectos son los mismos que las ejecuciones seriales
son denominadas serializables y son correctos ya que soportan la ilusin de la
atomicidad de las transacciones.

El concepto principal es el de transaccin. Informalmente, una transaccin es la


ejecucin de ciertas instrucciones que accedan a una base de datos compartida. El
objetivo del control de concurrencia y recuperacin es asegurar que dichas transacciones
se ejecuten atmicamente, es decir: Cada transaccin accede a informacin compartida
sin interferir con otras transacciones, y si una transaccin termina normalmente, todos
sus efectos son permanentes, en caso contrario no tiene afecto alguno. Una transaccin
es la ejecucin de ciertas instrucciones que accedan a una base de datos compartida. El
objetivo del control de concurrencia y recuperacin es asegurar que dichas transacciones
se ejecuten atmicamente, es decir: Cada transaccin accede a informacin compartida
sin interferir con otras transacciones, y si una transaccin termina normalmente, todos
sus efectos son permanentes, en caso contrario no tiene afecto alguno. Una base de
datos est en un estado consistente si obedece todas las restricciones de integridad
(significa que cuando un registro en una tabla haga referencia a un registro en otra tabla,
los registros correspondientes deben existir) definidas sobre ella. Los cambios de estado
ocurren debido a actualizaciones, inserciones y supresiones de informacin. Por
supuesto, se quiere asegurar que la base de datos nunca entre en un estado de
inconsistencia.
4.1 PROPIEDADES DE LAS TRANSACCIONES

PROPIEDADES FUNDAMENTALES DE UNA TRANSACCIN:


Atomicidad Se refiere al hecho de que una transaccin se trata como una unidad
de operacin. Por lo tanto, o todas las acciones de la transaccin se realizan o
ninguna de ellas se lleva a cabo. La atomicidad requiere que si una transaccin
se interrumpe por una falla, sus resultados parciales sean anulados.

Consistencia La consistencia de una transaccin es simplemente su correctitud.


En otras palabras, una transaccin es un programa correcto que lleva a la base
de datos de un estado consistente a otro
con la misma caracterstica. Debido a esto, las transacciones no
violan las restricciones de integridad de una base de datos.

Aislamiento Una transaccin en ejecucin no puede revelar sus resultados a otras


transacciones concurrentes antes de finalizar. Ms an, si varias transacciones se
ejecutan concurrentemente, los resultados deben ser los mismos que si ellas se
hubieran ejecutado de manera secuencial.

Permanencia Es la propiedad de las transacciones que asegura que una vez que
una transaccin finaliza exitosamente, sus resultados son permanentes y no
pueden ser borrados de la base de datos por alguna falla posterior. Por lo tanto,
los sistemas manejadores de base de datos aseguran que los resultados de una
transaccin sobrevivirn a fallas del sistema. Esta propiedad motiva el aspecto de
recuperacin de base de datos, el cual trata sobre cmo recuperar la base de
datos a un estado consistente donde todas las acciones que han finalizado con
xito queden reflejadas en la base.

En esencia, lo que se persigue con el procesamiento de transacciones es, por una


parte obtener una transparencia adecuada de las acciones concurrentes a una
base de datos y por otra, manejar adecuadamente las fallas que se puedan
presentar en una base de datos. La mayora de medianas y grandes compaas
modernas utilizan el procesamiento de transacciones para sus sistemas de
produccin, y es tan imprescindible que las organizaciones no pueden funcionar
en ausencia de l.

El procesamiento de transacciones representa una enorme y significativa porcin del


mercado de los sistemas informticos (ms de cincuenta billones de dlares al ao) y es,
probablemente, la aplicacin simple ms amplia de las computadoras.
Adems, se ha convertido en el elemento que facilita el comercio
electrnico.

Como puede percibirse, el procesamiento de transacciones es una de las tareas ms


importantes dentro de un sistema de base de datos, pero a la vez, es una de las ms
difciles de manejar debido a diversos aspectos, tales como:

Confiabilidad Puesto que los sistemas de base de datos en lnea no


pueden fallar.

Disponibilidad Debido a que los sistemas de base de datos en lnea


deben estar actualizados correctamente todo el tiempo.

Tiempos de Respuesta En sistemas de este tipo, el tiempo de


respuesta de las transacciones no debe ser mayor a doce segundos.

hroughput Los sistemas de base de datos en lnea requieren procesar


miles de transacciones por segundo.

Atomicidad En el procesamiento de transacciones no se aceptan


resultados parciales.

Permanencia No se permite la eliminacin en la base de datos de los


efectos de una transaccin que ha culminado con xito
4.2 GRADOS DE CONSISTENCIA

Consistencia es un trmino ms amplio que el de integridad. Podra definirse


como la coherencia entre todos los datos de la base de datos. Cuando se

pierde la integridad tambin se pierde la consistencia. Pero la consistencia


tambin puede perderse por razones de funcionamiento.
Una transaccin finalizada(confirmada parcialmente) puede no confirmarse
definitivamente (consistencia).

Si se confirma definitivamente el sistema asegura la persistencia de


los cambios que ha efectuado en la base de datos.

Si se anula los cambios que ha efectuado son deshechos.


La ejecucin de una transaccin debe conducir a un estado de la base de datos
consistente (que cumple todas las restricciones de integridad definidas).

Si se confirma definitivamente el sistema asegura la persistencia de


los cambios que ha efectuado en la base de datos.

Si se anula los cambios que ha efectuado son deshechos.


Una transaccin que termina con xito se dice que est comprometida (commited), una
transaccin que haya sido comprometida llevar a la base de datos a un nuevo estado
consistente que debe permanecer incluso si hay un fallo en el sistema. En cualquier
momento una transaccin slo puede estar en uno de los siguientes estados.

Activa (Active): el estado inicial; la transaccin permanece en este


estado durante su ejecucin.

Parcialmente comprometida (Uncommited): Despus de ejecutarse la


ltima transaccin.

Fallida (Failed): tras descubrir que no se puede continuar la ejecucin


normal.

Abortada (Rolled Back): despus de haber retrocedido la transaccin y restablecido la


base de datos a su estado anterior al comienzo de la transaccin.

Comprometida (Commited): tras completarse con xito


Aspectos relacionados al procesamiento de transacciones
Los siguientes son los aspectos ms importantes relacionados con el
procesamiento de transacciones:

Modelo de estructura de transacciones. Es importante considerar si


las transacciones son planas o pueden estar anidadas.

Consistencia de la base de datos interna. Los algoritmos de control de datos semntico


tienen que satisfacer siempre las restricciones de integridad cuando una transaccin
pretende hacer un commit.

Protocolos de confiabilidad. En transacciones distribuidas es necesario introducir medios


de comunicacin entre los diferentes nodos de una red para garantizar la atomicidad y
durabilidad de las transacciones. As tambin, se requieren protocolos para la
recuperacin local y para efectuar los compromisos (commit) globales.

Algoritmos de control de concurrencia. Los algoritmos de control de concurrencia deben


sincronizar la ejecucin de transacciones concurrentes bajo el criterio de correctitud. La
consistencia entre transacciones se garantiza mediante el aislamiento de las mismas.
4.4. NIVELES DE AISLAMIENTO
Las transacciones especifican un nivel de aislamiento que define el grado en que se debe
aislar una transaccin de las modificaciones de recursos o datos realizadas por otras
transacciones. Los niveles de aislamiento se describen en cuanto a los efectos
secundarios de la simultaneidad que se permiten, como las lecturas desfasadas o
ficticias.
Control de los niveles de aislamiento de transaccin:

Controla si se realizan bloqueos cuando se leen los datos y qu tipos de bloqueos


se solicitan.
Duracin de los bloqueos de lectura.
Si una operacin de lectura que hace referencia a filas modificadas por otra
transaccin:
o Se bloquea hasta que se libera el bloqueo exclusivo de la fila.
o Recupera la versin confirmada de la fila que exista en el momento en el
que empez la instruccin o la transaccin.
o Lee la modificacin de los datos no confirmados.

El nivel de aislamiento para una sesin SQL establece el comportamiento de los


bloqueos para las instrucciones SQL.
El estndar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional en funcin
de tres eventos que son permitidos o no dependiendo del nivel de aislamiento. Estos
eventos son:
Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos, pero
podra usarse una versin anterior de un registro. Por lo tanto, las lecturas no son
consistentes al usar este nivel de aislamiento.
Lectura norepetible. Una transaccin vuelve a leer datos que previamente haba ledo
y encuentra que han sido modificados o eliminados por una transaccin cursada.
Lectura fantasma. Una transaccin vuelve a ejecutar una consulta, devolviendo un
conjuto de registros que satisfacen una condicin de bsqueda y encuentra que otros
registro que satisfacen la condicin han sido insertadas por otra transaccin cursada.
Los niveles de aislamiento SQL son definidos basados en si ellos permiten a cada uno
de los eventos definidos anteriormente. Es interesante notar que el estndar SQL no
impone un esquema de cierre especfico o confiere por mandato comportamientos
particulares, pero ms bien describe estos niveles de aislamiento en trminos de estos
teniendo muchos mecanismos de cierre/coincidencia, que dependen del evento de
lectura.
Concurrencia Oracle
La ejecucin concurrente de varias transacciones debe garantizar que producirn el
mismo resultado que las mismas en serie.
En general, las BD multi-usuarios utilizan bloqueos en el control de concurrencia. Niveles
de bloqueo:

Bloqueo exclusivo. No permite que un recurso sea compartido. La primera


transaccin que lo bloquea es la nica que puede alterarlo.
Bloqueo compartido. Permite que un recurso sea compartido. Muchas
transacciones pueden adquirir este tipo de bloqueo sobre el mismo recurso.
Oracle utiliza adems multiversin para permitir el acceso concurrente a los datos.

Control de concurrencia multiversin


Oracle automticamente proporciona consistencia de lectura: datos que una consulta ve
son de un mismo punto en el tiempo (consistencia de lectura a nivel de sentencia).
Tambin puede proporcionar consistencia de lectura a todos las consultas de una
transaccin (consistencia a nivel de transaccin).
Cmo?

Oracle utiliza la informacin existente en el segmento de anulacin (datos


antiguos).
Cuando una consulta comienza se le asigna un nmero (SCN).
Datos leidos por una consulta tienen un SCN ms pequeo.
Bloques con SCN ms alto (ms reciente) son reconstruidos con la informacin
contenida en el segmento de anulacin.

Oracle proporciona consistencia de lectura a dos niveles:


Nivel de sentencia:

Oracle garantiza que los datos devueltos por una consulta son consistentes con
respecto al tiempo en que empez la consulta.
Oracle observa el SCN (system change number) cuando la consulta entra en
ejecucin.
Solo los datos aceptados antes de dicho SCN sern utilizados.
Segmentos de anulacin se utilizan para buscar versiones anteriores de los datos.
Nivel de transaccin:

Datos vistos por todas las consultas de una transaccin son consistentes con
respecto a un punto en el tiempo.
Se debe indicar que la transaccin es Read-Only.
Si las transacciones son de solo lectura, se acta como en el caso anterior.
Si existen otro tipo de consultas (modificar, borrar,insertar..) se deben utilizar
bloqueos.

Oracle proporciona tres niveles de aislamiento:

read-committed: Nivel de aislamiento por defecto. Cada consulta de una


transaccin solo ve los datos que fueron confirmados antes de que la consulta
comenzara. Se producen lecturas no reproducibles.
serializable transactions: Solamente se ven los cambios realizados por
transacciones confirmadas + cambios efectuados por ella misma.
read-only: transacciones de solo lectura ven datos confirmados antes de
empezar y no permiten modificaciones de los datos.

Para seleccionar uno de estos comandos al comienzo de una transaccin:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;


SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET TRANSACTION ISOLATION LEVEL READ ONLY;

Para establecer un nivel de aislamiento para el conjunto de transacciones siguientes:

ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE;


ALTER SESSION SET ISOLATION_LEVEL READ COMMITTED;

Eleccin de un nivel de aislamiento: los dos niveles siguientes proporcionan un alto grado
de concurrencia mediante la combinacin de multiversin y bloqueos.
read-committed:

nivel por defecto.


apropiado para la mayora de las aplicaciones.
Aplicaciones donde el ndice de llegada de transacciones es alto.
Si es poco problable que se ejecute una misma consulta dos veces
serializable:

Adecuado cuando es poco problable que dos transacciones concurrente


modifiquen las mismas filas.
Cuando las transacciones de larga duracin son principalmente de solo lectura.
No aparecen lecturas no reproducibles.

Bloqueos en Oracle
Bloqueos son los mecanismos que utiliza Oracle para evitar que dos transacciones
accedan al mismo recurso.
Automticamente Oracle obtiene los bloqueos necesarios cuando ejecuta alguna
sentencia en SQL.
ORACLE utiliza el nivel menos restrictivo guindose por las siguientes reglas:

Operaciones de lectura no esperan a las de escritura sobre los mismos datos.


Operaciones de escritura no esperan a las de lectura sobre los mismos datos.
Operaciones de escritura solamente esperan a otras operaciones de escritura que
intentan modificar la misma tupla.

Se utilizan bloqueos a nivel de fila: una transaccin espera cuando intenta modificar una
fila modificada por una transaccin no confirmada.
ORACLE no escalona los bloqueo.
Interbloqueos: ocurren cuando dos o ms usuarios estn esperando datos bloqueados
por los otros. Oracle automticamente detecta situaciones de interbloqueo y los resuelve
abortando una de las transacciones. Se detectan mediante grafos de esperas.
4.4 INSTRUCCIONES COMMIT Y ROLLBACK

Rollback transaction sin savepoint_name o transaction_name revierte todas las


instrucciones hasta el principio de la transaccin. Cuando se trata de transacciones
anidadas, esta misma instruccin revierte todas las transacciones internas hasta la
instruccin begin transaction ms externa. En ambos casos, rollback transaction
disminuye la funcin del sistema @@trancount a 0, mientras que rollback transaction con
savepoint_name no disminuye @@trancount.

Una instruccin rollback transaction que especifica un savepoint_name no


libera ningn bloqueo.

Rollback transaction no puede hacer referencia a un savepoint_name en transacciones


distribuidas que se iniciaron explcitamente con begin distributed transaction o que se
escalaron a partir de una transaccin local.

Una transaccin no se puede revertir despus de ejecutar una instruccin


commit transaction.

En una transaccin se permiten nombres de puntos de almacenamiento duplicados, pero


una instruccin rollback transaction que utilice este nombre slo revierte las
transacciones realizadas hasta la instruccin save transaction ms reciente que tambin
utilice este nombre.

Si se emite la instruccin ROLLBACK TRANSACTION en un desencadenador:

Se revierten todas las modificaciones de datos realizadas hasta ese punto de la


transaccin actual, incluidas las que realiz el desencadenador.

El desencadenador contina la ejecucin del resto de las instrucciones despus de la


instruccin ROLLBACK. Si alguna de estas instrucciones modifica datos, no se revierten
las modificaciones. La ejecucin de las instrucciones restantes no activa ningn
desencadenador anidado.

Tampoco se ejecutan las instrucciones del lote despus de la


instruccin que activ el desencadenador
COMMIT TRANSACTION
Si la transaccin que se ha confirmado era una transaccin Transact-SQL distribuida,
COMMIT TRANSACTION hace que MS DTC utilice el protocolo de confirmacin en dos
fases para confirmar los servidores involucrados en la transaccin. Si una transaccin
local afecta a dos o ms bases de datos de la misma instancia del Database Engine
(Motor de base de datos), la instancia utiliza una confirmacin interna en dos fases para
confirmar todas las bases de datos involucradas en la transaccin. Cuando se utiliza en
transacciones anidadas, las confirmaciones de las transacciones anidadas no liberan
recursos ni hacen permanentes sus modificaciones. Las modificaciones sobre los datos
slo quedan permanentes y se liberan los recursos cuando se confirma la transaccin
ms externa. Cada commit transaction que se ejecute cuando @@trancount sea mayor
que 1 slo reduce @@trancount en 1. Cuando @@trancount llega a 0, se confirma la
transaccin externa entera. Como database engine (motor de base de datos) omite
transaction_name, la ejecucin de una instruccin commit transaction que haga
referencia al nombre de una transaccin externa cuando haya transacciones internas
pendientes slo reduce @@trancount en 1.

COMMIT

Esta instruccion de SQL se utiliza para confirmar como permamentes las


modificaciones realizadas en una transaccin.

Begin tran
Insert into Mvtos Values (0150, Dep, 1500, 08-10-2008)
Insert into Mvtos Values (7120, Ret, 1500, 08-10-2008)
Update Cuentas Set Saldo = Saldo + 1 where Numero = 0150
Update Cuentas Set Saldo = Saldo 1 Where Numero = 7120
Commit tran

Con la instruccion commit tran se pone una marca para saber hasta que
punto se hizo la transaccion.
ROLLBACK

Esta funcion del SQL se utiliza para deshacer todas las modificaciones
realizadas desde la ltima confirmacin.

Ejemplo

Begin tran
<Comandos SQL>
<Comandos SQL>
Save tran Puntoseg
<Comandos SQL>
<Comandos SQL>
If @@ERROR <> 0
Rollback tran Puntoseg (cancela todo desde aqu hasta el punto de
guardado)
Else
Commit tran