Академический Документы
Профессиональный Документы
Культура Документы
Presentado por:
Presentado por:
Presentado a:
Ing. Frank Castillo
EXCLUSIVE MODE
Cualquier transaccin que intenta actualizar una fila en la tabla bloqueada debe
esperar encolada, hasta que la transaccin que ha bloqueado la tabla termine. Es
la forma ms estricta de bloqueo.
ROW EXCLUSIVE Lo mismo que ROW SHARE, pero tambin prohbe hacer un
bloque ROW SHARE, Este es el tipo de bloqueo que se obtiene automticamente
cuando se hace un update, insert o delete.
SHARED
Permite concurrentes pero prohbe updates a una tabla bloqueada. Este tipo de
bloque se produce automticamente cuando se crea un ndice o una tabla. Prohbe
a otras sesiones bloquear la tabla en modo SHARE o actualizar registros.
Permite consultar toda la tabla y permite a los otros consultar registros dentro de la
tabla, preo prohbe a otros usuarios bloquear la tabla en modo SHARE o realizar
actualizaciones de registros.
EXCLUSIVE
BLOQUEOS COMPARTIDOS
Los bloqueos compartidos (S) permiten que varias transacciones simultneas lean
(SELECT) un recurso en situaciones de control de simultaneidad pesimista. Para
obtener ms informacin, vea Tipos de control de simultaneidad. Ninguna otra
transaccin podr modificar los datos mientras el bloqueo compartido (S) exista en
el recurso. Los bloqueos compartidos (S) en un recurso se liberan tan pronto como
finaliza la operacin de lectura, a menos que se haya establecido el nivel de
aislamiento de la transaccin como REPEATABLE READ o ms alto, o bien se
utilice una sugerencia de bloqueo para mantener los bloqueos compartidos (S)
durante la transaccin.
BLOQUEOS DE ACTUALIZACIN
Los bloqueos de actualizacin (U) evitan una forma comn de interbloqueo. En una
transaccin de lectura repetible o serializable, la transaccin lee los datos, adquiere
un bloqueo compartido (S) en el recurso (pgina o fila) y, a continuacin, modifica
los datos, lo que requiere una conversin del bloqueo en un bloqueo exclusivo (X).
Si dos transacciones adquieren bloqueos compartidos en un recurso y, a
continuacin, intentan actualizar los datos simultneamente, una de ellas intenta
convertir el bloqueo en un bloqueo exclusivo (X). La conversin de bloqueo
compartido en exclusivo debe esperar, ya que el bloqueo exclusivo de una
transaccin no es compatible con el bloqueo compartido de la otra. Por tanto, se
produce una espera de bloqueos. La segunda transaccin intenta adquirir un
bloqueo exclusivo (X) para realizar su actualizacin. Debido a que ambas
transacciones intentan convertir los bloqueos en exclusivos (X) y cada una espera
a que la otra libere su bloqueo de modo compartido, se produce un interbloqueo.
Para evitar este posible problema de interbloqueo, se utilizan los bloqueos de
actualizacin (U). Dos transacciones no pueden obtener simultneamente un
bloqueo de actualizacin (U) para un recurso. Si una transaccin modifica un
recurso, el bloqueo de actualizacin (U) se convierte en un bloqueo exclusivo (X).
BLOQUEOS EXCLUSIVOS
Los bloqueos exclusivos (X) evitan que transacciones simultneas tengan acceso a
un recurso. Al utilizar un bloqueo exclusivo (X), el resto de las transacciones no
pueden modificar los datos; las operaciones de lectura slo se pueden realizar si se
utiliza la sugerencia NOLOCK o el nivel de aislamiento de lectura no confirmada.
Las instrucciones para modificar datos, como INSERT, UPDATE y DELETE
combinan las operaciones de modificacin con las de lectura. En primer lugar, la
instruccin lleva a cabo operaciones de lectura para adquirir los datos antes de
proceder a ejecutar las operaciones de modificacin necesarias. Por tanto, las
instrucciones de modificacin de datos suelen solicitar bloqueos compartidos y
exclusivos. Por ejemplo, una instruccin UPDATE puede modificar las filas de una
tabla a partir de una combinacin con otra tabla. En este caso, la instruccin
UPDATE solicita bloqueos compartidos para la filas ledas en la tabla de
combinacin, adems de bloqueos exclusivos para las filas actualizadas.
Motor de base de datos utiliza bloqueos con intencin para proteger la aplicacin de
un bloqueo compartido (S) o exclusivo (X) en un recurso inferior en la jerarqua de
bloqueos. Los bloqueos con intencin se denominan as porque se adquieren antes
que los bloqueos de los niveles inferiores y, por lo tanto, sealan la intencin de
aplicar bloqueos en un nivel inferior.
Los bloqueos con intencin se utilizan con dos fines:
Para evitar que otras transacciones modifiquen el recurso de nivel superior de forma
que invaliden el bloqueo del nivel inferior.
Para mejorar la eficacia de Motor de base de datos para detectar conflictos de
bloqueo en el nivel superior de granularidad.
Por ejemplo, un bloqueo con intencin compartida para el nivel de tabla se solicita
antes que los bloqueos compartidos (S) para las pginas o filas de la tabla.
Establecer un bloqueo con intencin en una tabla evita que otra transaccin
adquiera un bloqueo exclusivo (X) para la tabla que contiene esa pgina. Los
bloqueos con intencin mejoran el rendimiento, porque Motor de base de datos
examina los bloqueos con intencin slo en el nivel de tabla para determinar si una
transaccin puede adquirir un bloqueo de dicha tabla de forma segura. Esto elimina
la necesidad de examinar cada bloqueo de fila o de pgina de la tabla para
determinar si una transaccin puede bloquear toda la tabla.
BLOQUEOS DE ESQUEMA
El bloqueo pesimista es la tcnica por la cual los datos son bloqueados previos a su
modificacin para evitar que nadie los modifique. Una vez que los datos a actualizar
han sido bloqueados la aplicacin puede acometer los cambios, con commit o
rollback, en ese caso el bloqueo es automticamente eliminado. Si alguien intenta
adquirir un bloqueo de los mismos datos durante el proceso ser obligado a esperar
hasta que la primera transaccin finalice.
Esta tcnica es muy simple pero tiene dos problemas fundamentales:
Bloqueo: un usuario selecciona un registro para actualizar, y entonces abandona
la operacin. Todos los usuarios que necesitan actualizar ese registro tienen que
esperar hasta que se complete la transaccin, o hasta que se mate y finalice el
bloqueo.
Deadlock: Si los usuarios A y B estn ambos actualizando la base de datos a la
vez y A bloqueo un registro e intenta adquirir un bloqueo mantenido por B, que a su
vez est esperando a adquirir un bloqueo mantenido por A ambas transacciones
quedaran en espera indefinidamente, dando lugar a un Deadlock.
En general los Sistemas RDBMS ofrecen clusulas para este bloqueo. Oracle
soporta bloqueo pesimista a nivel de fila. La sentencia estndar para el bloqueo es
SELECT FOR UPDATE que hace que todas las sentencias UPDATE o SELECT
FOR UPDATE de otras conexiones se bloqueen hasta que un commit, rollback o
deadlock se produzca. Se produce un deadlock cuando un usuario que tiene la fila
A bloqueada intenta bloquear la fila B, mientras que otro usuario tiene la fila B
bloqueada e intenta bloquear la A. En este caso Oracle deshabilita uno de los
bloqueos del usuario permitiendo al otro usuario bloquear ambas filas.
Oracle adems tiene el bloqueo SELECT FOR UPDATE NO WAIT, de modo que
Oracle causar una excepcin cuando una fila bloqueada es seleccionada. Esto
puede ser til si no se quiere bloquear un usuario para un tiempo indefinido.
EL BLOQUEO OPTIMISTA
No bloquea los registros que se van a actualizar y asume que los datos que estn
siendo actualizados no van a cambiar desde que se han ledo. Puesto que en
nuestro caso no se puede asumir esto es necesario un control de la concurrencia,
de esta manera el bloqueo optimista con control de concurrencia asegura que los
datos que estn siendo escritos son consistentes con los ledos en primera
instancia, es decir que ninguna otra transaccin ha actualizado los datos despus
de la lectura. El procedimiento para asegurar la consistencia es muy sencillo: se
leer un valor junto al registro, se actualizar ese valor a la BD cuando el registro
es actualizado.
PROCEDIMIENTOS ALMACENADOS
USO
CARACTERSTICAS
Cada trigger implementa una interfaz concreta, as pues para gestionar un trigger
sobre un objeto que implemente la interfaz Device dispone de una interfaz
DeviceTrigger la cual define los siguientes mtodos.
DISPARADORES EN MYSQL
El estndar SQL: 2003 requiere que los disparadores den a los programadores
acceso a las variables de un registro utilizando una sintaxis como REFERENCING
NEW AS n. Por ejemplo, si un disparador est monitoreando los cambios en la
columna salario.
Como en MySQL las sentencias se ejecutan luego de escribir el signo punto y coma
(;), cabe destacar que para crear un disparador en MySQL, antes se escribe la
sentencia DELIMITER seguida de un carcter tal como |, la cual asigna la funcin
del punto y coma (;) a otro carcter permitiendo que el disparador sea escrito usando
los punto y comas sin que se ejecute mientras se escribe; despus de escrito el
disparador se escribe nuevamente la sentencia DELIMITER ; para asignar al punto
y coma su funcin habitual.
DISPARADORES EN POSTGRESQL