SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
6 TEMA 6. ADMINISTRACIÓN DE LA BASE DE
  DATOS



6     TEMA 6. ADMINISTRACIÓN DE LA BASE DE DATOS .................................. 1
    6.1     Seguridad de la base de datos ........................................................................... 2
       6.1.1     Consideraciones generales de Seguridad.................................................. 2
       6.1.2     Seguridad en SQL..................................................................................... 2
    6.2      Recuperación y Concurrencia........................................................................... 5
       6.2.1     Recuperación de transacciones................................................................. 5
       6.2.2     Recuperación del sistema ......................................................................... 8
       6.2.3     Problemas de concurrencia....................................................................... 9
       6.2.4     El Bloqueo .............................................................................................. 11




Tema 6: Administración de la base de datos                                                                                 1
6.1 Seguridad de la base de datos
6.1.1 Consideraciones generales de Seguridad
Seguridad hace referencia a la protección de los datos contra una revelación, alteración
o destrucción no autorizada. En otras palabras, seguridad implica asegurar que los
usuarios están autorizados para llevar a cabo lo que tratan de hacer.

El problema de la seguridad tiene muchos aspectos, entre los que cabe destacar:

       •   Aspectos legales, sociales y éticos
       •   Controles físicos
       •   Cuestiones de política interna
       •   Problemas de operación
       •   Controles de equipo
       •   Seguridad del sistema operativo
       •   Materias de relevancia específica para el sistema de base de datos

Nos vamos a limitar a este último punto, puesto que el resto dependen
considerablemente del entorno particular de cada base de datos.

Los objetos susceptibles de la aplicación de un mecanismo de seguridad pueden ser
desde bases de datos completas hasta valores específicos en una fila y columna concreta
de una tabla. Los mecanismos de seguridad deben garantizar que los usuarios sólo
pueden realizar aquellas operaciones para las que están autorizados sobre ciertos objetos
particulares. Por otro lado, hay que tener en cuenta que distintos usuarios pueden tener
diferentes tipos de autorizaciones sobre los mismos objetos.

Las medidas de seguridad de la información las toma el administrador de la base de
datos, para lo que utiliza las herramientas proporcionadas por el lenguaje de operación
de la base de datos.

En el caso del SQL, el sistema cuenta con dos mecanismos diferentes implicados en el
mantenimiento de la seguridad: el sistema de gestión de vistas, y el subsistema de
autorización mediante el cual usuarios con derechos específicos pueden conceder de
manera selectiva y dinámica esos derechos a otros usuarios, y después revocar esos
derechos si lo desean.

6.1.2 Seguridad en SQL
Las vistas pueden ser utilizadas con propósitos de seguridad, delimitando el acceso de
los usuarios a ciertas porciones de la información. Veamos unos cuantos ejemplos que
nos permiten distinguir distintas formas de aplicar seguridad a la base de datos:

           CREATE VIEW PROVEEDORES_DE_PARIS
           AS SELECT * FROM S
           WHERE CIUDAD = ‘PARIS’;
           /* Los usuarios de esta vista ven un subconjunto horizontal de la tabla */




Tema 6: Administración de la base de datos                                              2
CREATE VIEW S#_NOMBRE_CIUDAD
            AS SELECT S#, NOMBRE, CIUDAD FROM S;
            /* Los usuarios de esta vista obtienen un subconjunto vertical de la tabla */

            CREATE VIEW PARIS_S#_NOMBRE_CIUDAD
            AS SELECT S#, NOMBRE, CIUDAD FROM S
            WHERE CIUDAD = ‘PARIS’;
            /* Los usuarios de esta vista obtienen un subconjunto de filas y columnas */

            CREATE VIEW MISTABLAS
            AS SELECT * FROM SYSTABLES
            WHERE CREATOR = USER;
            /* Se obtiene una vista de todas las tablas cuyo propietario es el usuario */

Las vistas, como ya se recordará de capítulos anteriores, pueden ser creadas utilizando
la sintaxis siguiente:

            CREATE VIEW [user.]view [ ( alias [, alias] … ) ]
                 AS query
                 [WITH CHECK OPTION [CONSTRAINT constraint] ]

Es importante destacar que el uso de ‘WITH CHECK OPTION’ garantiza que se
puedan insertar registros en la tabla, a través de la vista, sólo si se cumple la condición
de restricción especificada (por ejemplo, en la primera vista se podrán insertar ciudades
que no sean París, a no ser que se utilice la opción ‘WITH CHECK OPTION’).

Para completar los mecanismos de seguridad, como ya hemos indicado, es necesario
disponer de ciertos mecanismos que nos permitan asignar a los usuarios permisos de
acceso a tablas y vistas de la base de datos. Para ello se utilizan las sentencias GRANT
y REVOKE, que ya han sido explicadas en temas anteriores.

            GRANT dabase_priv [, databse_priv] …
                 TO user [, user] …
                 [IDENTIFIED BY password [, password] … ]

            Siendo database_priv = DBA | CONNECT | RESOURCE

            GRANT RESOURCE [ (quota [k|m] ) ]
                 ON tablespace
                 TO { PUBLIC | user [, user] … }

            Siendo quota el espacio en bytes.

            GRANT { object_priv [, object_priv] … | ALL [PRIVILEGES] }
                 ON [user.]object
                 TO { user | PUBLIC } [, user] …
                 [WITH GRANT OPTION]

            Siendo object_priv = ALTER | DELETE | INDEX | INSERT | REFERENCES |
                   SELECT | UPDATE. Si se utiliza UPDATE o REFERENCES, se pueden
                   especificar columnas.

                       ================================

            REVOKE { [CONNECT] [, RESOURCE] [,DBA] }
                 FROM user [, user]




Tema 6: Administración de la base de datos                                                  3
REVOKE space_privilege ON tablespace
                FROM user [, user]

           REVOKE {object_priv [, object_priv] … | ALL [PRIVILEGES] }
                ON [user.]object
                FROM {user | PUBLIC} [,user] …




Tema 6: Administración de la base de datos                              4
6.2 Recuperación y Concurrencia
6.2.1 Recuperación de transacciones
Los problemas de recuperación y concurrencia en un sistema de base de datos están
muy ligados a la noción de procesamiento de transacciones.

Una transacción es una unidad lógica de trabajo. Dicho de otra forma, una transacción
es una secuencia de operaciones en una base de datos mediante la cual un estado
consistente de la base de datos se transforma en otro estado consistente, sin conservar
por fuerza la consistencia en todos los estados intermedios.

Ilustremos el caso con un ejemplo. Supongamos dos tablas (A y B) en una base de datos
estrechamente relacionadas, de forma que cuando se introduce un dato en la tabla A hay
que modificar por fuerza la tabla B para que se conserve la consistencia completa del
sistema. En este caso, consideramos como una operación cada una de las
modificaciones realizadas en cada tabla, mientras que una transacción es el conjunto de
las modificaciones que hacen que la base de datos vuelva a estar en una forma
consistente tras una primera modificación.

Es claro que nuestro deseo es asegurarnos que tras una modificación en la tabla A va a
tener lugar la correspondiente modificación en la tabla B. Sin embargo, esto no es
siempre posible, puesto que el sistema puede caer en el momento más inoportuno (es
decir, tras la primera operación). Sin embargo, si el sistema maneja el procesamiento de
transacciones, podrá ofrecer algo muy cercano a esta garantía. Más específicamente,
garantizará que si la transacción ejecuta algunas modificaciones (no todas) y se produce
un fallo antes del final de la transacción, se anularán las modificaciones realizadas. De
este modo, o la transacción se completa totalmente, o se anula totalmente.

El componente del sistema encargado de lograr este propósito es el gestor de
transacciones, y las operaciones en SQL COMMIT y ROLLBACK son la clave de su
funcionamiento: COMMIT indica que una transacción ha finalizado con éxito al SGBD,
mientras que ROLLBACK indica al SGBD que debe recuperar su estado justo en el
momento anterior a comenzar la transacción que no ha podido finalizar (en su defecto,
retornará al último estado de la base de datos en el que se realizó un COMMIT).

La capacidad de realizar la recuperación se debe a que los SGBD mantienen un
histórico de todas las operaciones de actualización realizadas en el sistema. Por tanto, si
resulta necesario anular alguna modificación específica, el sistema puede utilizar la
entrada concreta en el histórico para restaurar el valor original del objeto modificado.

Aún con todo este mecanismo de recuperación, es posible que el sistema caiga justo
después de haber realizado el COMMIT, sin que los datos se hayan almacenado
físicamente en el disco. Los SGBD deben garantizar el COMMIT incluso en este
supuesto (siempre y cuando el histórico haya almacenado físicamente la transacción
antes de ejecutar el comando COMMIT), y lo hacen de forma que cuando el sistema se
arranca de nuevo toma las transacciones que hayan podido quedar a la espera del
COMMIT y las confirma en el sistema. Este método se conoce como protocolo de
bitácora de escritura avanzada.



Tema 6: Administración de la base de datos                                               5
Para asegurar la integridad de los datos se necesita que el sistema de base de datos
mantenga las siguientes propiedades de las transacciones:

       •   Atomicidad. O todas las operaciones de la transacción se realizan
           adecuadamente en la base de datos, o ninguna de ellas.
       •   Consistencia. La ejecución aislada de la transacción (es decir, sin otra
           transacción que se ejecute concurrentemente) conserva la consistencia de la
           base de datos.
       •   Aislamiento. Aunque se ejecuten varias transacciones concurrentemente, el
           sistema garantiza que para cada par de transacciones T1 y T2, se cumple
           para T1 que T2 ha terminado su ejecución antes de que comience T1, o bien
           que T2 ha comenzado su ejecución después de que T1 termine. De este
           modo, cada transacción ignora al resto de las transacciones que se ejecuten
           concurrentemente en el sistema.
       •   Durabilidad. Tras la finalización con éxito de una transacción, los cambios
           realizados en la base de datos permanecen, incluso si hay fallos en el
           sistema.

Estas propiedades a menudo reciben el nombre de propiedades ACID; el acrónimo se
obtiene de la primera letra de cada una de las cuatro propiedades en inglés (Atomicity,
Consistency, Isolation, Durability).

En ausencia de fallos, todas las transacciones se completan con éxito. Sin embargo, una
transacción puede que no siempre termine su ejecución con éxito. Una transacción de
este tipo se denomina abortada. Si se pretende asegurar la atomicidad, una transacción
abortada no debe tener efecto sobre el estado de la base de datos. Así, cualquier cambio
que haya hecho la transacción abortada sobre la base de datos debe deshacerse. Un vez
que se han desecho los cambios realizados por la transacción abortada, se dice que la
transacción se ha retrocedido. Una transacción que termina con éxito se dice que está
comprometida. Una transacción comprometida que haya hecho modificaciones en la
base de datos llevándola a un nuevo estado consistente, que permanece incluso si hay un
fallo en el sistema.

Cuando una transacción se ha comprometido, no se pueden deshacer sus efectos
abortándola. La única forma de deshacer los cambios de una transacción comprometida
es ejecutando una transacción compensadora. Sin embargo, no siempre se puede crear
dicha transacción compensadora. Por tanto, se deja al usuario la responsabilidad de
crear y ejecutar transacciones compensadoras, y no las gestiona el sistema de base de
datos. Se puede precisar más lo que se entiende por terminación con éxito de una
transacción, a través de un modelo simple abstracto de transacción. Una transacción
debe estar en uno de los estados siguientes:

       •   Activa. El estado inicial. La transacción permanece en este estado durante su
           ejecución.
       •   Parcialmente comprometida. Después de ejecutarse la última instrucción.
       •   Fallida. Tras descubrir que no puede continuar la ejecución normal.
       •   Abortada. Después de haber retrocedido la transacción y restablecido la
           base de datos a su estado anterior al comienzo de la transacción.
       •   Comprometida. Tras completarse con éxito.




Tema 6: Administración de la base de datos                                            6
A continuación se muestra un diagrama de estados correspondiente al modelo que
hemos definido:



                                           2                          4
                                                      3
                                     parcialmente
                                                                 comprometida
                                     comprometida

                  1         1

                activa                     4


                            2
                                          3                           5
                                                      5
                                        fallida                    abortada




Se dice que una transacción se ha comprometido sólo si ha llegado al estado
comprometida. Análogamente, se dice que una transacción ha abortado sólo si ha
llegado al estado abortada. Una transacción se dice que ha terminado si ha llegado a
alguno de estos dos estados.

Un transacción comienza en el estado activa. Cuando acaba su última instrucción pasa
al estado parcialmente comprometida. En este punto la transacción ha terminado su
ejecución, pero es posible que aún tenga que ser abortada, puesto que los datos actuales
pueden estar todavía en memoria principal, y puede producirse un fallo en el hardware
antes de que se complete con éxito.

El sistema de base de datos escribe en disco la información suficiente para que, incluso
al producirse un fallo, puedan reproducirse los cambios hechos por la transacción al
reiniciar el sistema tras el fallo. Cuando se termina de escribir esta información, la
transacción pasa al estado comprometida.

Una transacción llega al estado fallida después de que el sistema determine que dicha
transacción no puede continuar su ejecución normal. Una transacción de este tipo se
debe retroceder. Después, pasa al estado abortada. En este punto, el sistema tiene dos
opciones:

       •   Reiniciar la transacción, pero sólo si la transacción se ha abortado a causa de
           algún error hardware o software que no lo haya provocado la lógica interna
           de la transacción. Una transacción reiniciada se considera una nueva
           transacción.

       •   Cancelar la transacción. Normalmente se hace esto si hay algún error interno
           lógico que sólo se puede corregir escribiendo de nuevo la secuencia de
           acciones que componen la transacción, o debido a una entrada incorrecta, o
           debido a que no se han encontrado los datos deseados en la base de datos.




Tema 6: Administración de la base de datos                                              7
6.2.2 Recuperación del sistema
El sistema debe estar preparado para recuperarse no sólo de fallos puramente locales,
sino también de fallos globales. Un fallo local afecta sólo a la transacción en la que se
presentó el fallo, mientras que un fallo global afecta a todas las transacciones que se
estaban realizando en el momento del fallo.

Ante un fallo global, el sistema deberá recuperarse de fallos del sistema y de fallos de
los medios de almacenamiento:

       •    Fallos del sistema, que afectan a todas las transacciones que se están
            realizando, pero no dañan físicamente a la base de datos. También se
            conocen como caídas suaves.

       •    Fallos de los medios de almacenamiento, que causan daños a la base de datos
            o a una porción de ella, y afectan al menos a las transacciones que están
            utilizando esa porción. También se conocen como caídas duras.

6.2.2.1 Fallos del sistema

El punto crítico en este tipo de fallos es que se pierde el contenido de la memoria
principal. Por tanto, ya no se reconocerá el estado preciso de la transacción que se
estuviera realizando en el momento del fallo. Esa transacción jamás se podrá finalizar,
por lo que será necesario anularla al reiniciar el sistema. Incluso podría ser necesario
volver a realizar ciertas transacciones cuya ejecución sí terminó con éxito antes de la
caída pero cuyas modificaciones no lograron ser transferidas de los buffers a la base de
datos física.

Pero, ¿cómo sabe el sistema que transacciones debe volver a realizar y cuales debe
anular?. Cada cierto intervalo de tiempo el sistema establece un punto de revisión de
forma automática. Esto implica:

       1. Grabar físicamente el contenido de los buffers en la base de datos física, y
       2. Grabar físicamente un registro de punto de revisión especial en el histórico o
          bitácora física.

El registro de punto de revisión incluye una lista de todas las transacciones que se
estaban realizando en el momento de establecerse el punto de revisión.

Tomemos el siguiente ejemplo explicativo:

Tiempo
       T1
       T2
       T3
       T4
       T5

                             tv                                   tf


Tema 6: Administración de la base de datos                                             8
Es evidente que deberán anularse las transacciones T3 y T5 y deberán realizarse de
nuevo las transacciones T2 y T4. La T1 no entra en el proceso. Por tanto, al reiniciar el
sistema se efectúa el siguiente procedimiento para identificar las transacciones T2 a T5:

       1. Comenzar con dos listas de transacciones: ANULAR y REPETIR, e incluir
          en la lista ANULAR todas las transacciones incluidas en el punto de
          revisión. Dejar vacía la lista REPETIR.
       2. Examinar la bitácora hacia delante a partir del registro del punto de revisión.
       3. Si se encuentra una entrada de bitácora de “iniciar transacción” para la
          transacción T, añadir T a la lista ANULAR.
       4. Si se encuentra una entrada de bitácora de “comprometer” para la
          transacción T, pasar T de la lista ANULAR a la de REPETIR.
       5. Cuando se llegue al final de la bitácora, proceder a anular y repetir
          respectivamente las transacciones de las listas ANULAR y REPETIR.

Cuando finalice este proceso, el sistema estará preparado para aceptar trabajos nuevos.

6.2.2.2 Fallos de los medios de almacenamiento

Un fallo de los medios de almacenamiento es un percance donde se destruye
físicamente alguna porción de la base de datos. Este fallo implica el restaurar la base de
datos a partir de una copia de seguridad y utilizar después la bitácora para realizar de
nuevo todas las transacciones terminadas desde que se realizó dicha copia de seguridad.
No será necesario anular las transacciones no finalizadas puesto que por definición estas
transacciones se anularon (destruyeron) de todas maneras.

6.2.3 Problemas de concurrencia
La mayoría de los SGBD son multiusuario. En estos sistemas se necesita un mecanismo
de control de concurrencia para asegurar que ninguna transacción concurrente interfiera
con las operaciones de las demás. Sin este tipo de mecanismos pueden surgir muchos
problemas, entre los que veremos los más significativos.

Son tres los errores que pueden presentarse, es decir, tres situaciones en las que una
transacción, aunque correcta en sí, puede producir de todos modos un resultado
incorrecto debido a una interferencia por parte de alguna otra transacción:

       1. El problema de la modificación perdida.
       2. El problema de la dependencia no comprometida
       3. El problema del análisis inconsistente

6.2.3.1 El problema de la modificación perdida

Consideremos la siguiente situación:


    TRANSACCION A                       TIEMPO                   TRANSACCION B
      Leer registro R                      T1
                                           T2                      Leer registro R
   Actualizar registro R                   T3
                                           T4                   Actualizar registro R


Tema 6: Administración de la base de datos                                                9
Es evidente que la modificación realizada por la transacción A se pierde porque la
transacción B sobreescribe el resultado sobre el resultado anterior.

6.2.3.2 El problema de la dependencia no comprometida

Este problema se presenta cuando se permite a una transacción leer (o modificar) un
registro que ha sido puesto al día por otra transacción, y esta última todavía no la ha
comprometido. Es evidente que existe la posibilidad de que nunca se comprometa, lo
cual indicaría que los datos transitorios podrían no ser correctos y generar un error
encadenado en otras transacciones.


    TRANSACCION A                      TIEMPO                   TRANSACCION B
                                          T1                    Actualizar registro R
      Leer registro R                     T2
                                          T3                          Rollback


    TRANSACCION A                      TIEMPO                   TRANSACCION B
                                          T1                    Actualizar registro R
   Actualizar registro R                  T2
                                          T3                          Rollback

En la primera de estas dos situaciones, A está trabajando con un valor de un registro
incorrecto o inexistente. En el segundo caso, la actualización del registro se deshace en
T3 debido al Rollback solicitado por B.

6.2.3.3 El problema del análisis inconsistente

Supongamos el siguiente caso, con valores iniciales de CTA1 = 40, CTA2 = 50, y
CTA3 = 30:


    TRANSACCION A                      TIEMPO                   TRANSACCION B
     Traer CTA1 (40):                     T1
        Suma = 40
     Traer CTA2 (50):                      T2
        Suma = 90
                                           T3                    Traer CTA3 (30):
                                           T4                    Actualizar CTA3:
                                                                    CTA3 = 20
                                           T5                    Traer CTA1 (40):
                                           T6                    Actualizar CTA1:
                                                                    CTA1 = 50
                                           T7                       COMMIT
     Traer CTA3 (20):                      T8
       Suma = 110

No encontramos con la situación de que el resultado de una transacción ha interferido
claramente en el resultado de otra de duración mayor. El resultado 110 es incorrecto, y
por tanto decimos que A ha realizado un análisis inconsistente.


Tema 6: Administración de la base de datos                                              10
6.2.4 El Bloqueo
El bloqueo es la técnica más usual que se utiliza para resolver problemas de
concurrencia. La noción básica de bloqueo es simple: cuando una transacción requiere
la seguridad de que algún objeto en la cual está interesada no cambiará de alguna
manera no predecible sin que ella se dé cuenta, adquiere un bloqueo sobre ese objeto,
con lo que ninguna transacción podrá leer ni modificar dicho objeto.

El bloqueo funciona del siguiente modo:

       1. Primero suponemos la existencia de dos tipos de bloqueo, bloqueos
          exclusivos (X) y bloqueos compartidos (S), definidos en los siguientes dos
          puntos.
       2. Si la transacción A tiene un bloqueo exclusivo (X) sobre el registro R, una
          solicitud por parte de una transacción B de cualquier tipo de bloqueo sobre R
          hará que B entre en un estado de espera. B espera hasta que A libere el
          bloqueo.
       3. Si una transacción A tiene un bloqueo compartido (S) sobre el registro R:
              a) una solicitud por parte de una transacción B de bloqueo X sobre R
                  hará que B entre en un estado de espera, y B espera hasta que se
                  libere el bloqueo de A;
              b) una solicitud por parte de una transacción B de un bloqueo S sobre R
                  será concedida, y B tendrá también ahora un bloqueo sobre R.

Veamos todo esto en una matriz de compatibilidad:


                                 X        S       -
                         X       N        N       S
                         S       N        S       S
                         -       S        S       S

Interpretación: Consideremos un registro R, y que una transacción A tiene algún
bloqueo sobre R tal y como lo indican las entradas en las cabeceras de las columnas.
Supongamos que una transacción B emite una solicitud de bloqueo sobre R tal y como
indica la primera columna. Una N indica un conflicto (B entra en un estado de espera), y
S indica compatibilidad.

       4. Las solicitudes de bloqueo sobre registros por parte de las transacciones son
          implícitas en condiciones normales. Cuando una transacción lee con éxito un
          registro, adquiere de forma automática un bloqueo S sobre él, y cuando lo
          actualiza, adquiere un bloqueo X.

       5. Los bloqueos X se mantienen hasta el siguiente punto de sincronización. Lo
          normal es que los bloqueos S se mantengan de igual forma.

Veamos ahora cómo se resolverían los tres problemas de concurrencia que hemos
descrito con anterioridad utilizando los bloqueos. En cada caso podremos obtener la
secuencia de acciones llevadas a cabo por cada transacción, y los periodos de espera en
los que se encuentran cada una, así como el tipo de bloqueos utilizado en cada caso.



Tema 6: Administración de la base de datos                                           11
6.2.4.1 El problema de la modificación perdida


    TRANSACCION A                     TIEMPO                   TRANSACCION B
       Leer registro R                   T1
    (adquirir bloqueo S)
                                          T2                     Leer registro R
                                                              (adquirir bloqueo S)
   Actualizar registro R                  T3
   (solicitar bloqueo X)
          esperar,
          esperar,
             …
                                          T4                  Actualizar registro R
                                                              (solicitar bloqueo X)
                                                                     esperar,
                                                                     esperar,
                                                                        …

Las operaciones de lectura llevan implícito un bloqueo S, y las de escritura un bloqueo
X, con lo que siguiendo la secuencia en el tiempo, las dos transacciones quedan en un
tiempo de espera infinito, y no se pierde ninguna modificación (porque no se realiza).
Esto, sin embargo, nos lleva a un problema que trataremos un poco más adelante: el
bloqueo mutuo.

6.2.4.2 El problema de la dependencia no comprometida


    TRANSACCION A                     TIEMPO                  TRANSACCION B
                                         T1                   Actualizar registro R
                                                                  (bloqueo X)
      Leer registro R                     T2
   (solicitar bloqueo S)
        esperar, …
                                          T3                         Rollback
                                                              (liberar el bloqueo X)
     Continuar: Leer R                    T4
    (adquirir bloqueo S)


    TRANSACCION A                     TIEMPO                  TRANSACCION B
                                         T1                   Actualizar registro R
                                                                  (bloqueo X)
   Actualizar registro R                  T2
   (solicitar bloqueo X)
        esperar, …
                                          T3                         Rollback
                                                              (liberar el bloqueo X)
  Continuar: Actualizar R                 T4
   (adquirir bloqueo X)


Tema 6: Administración de la base de datos                                             12
Como se puede apreciar en las nuevas tablas que reproducen el caso del problema
descrito en un apartado anterior, los bloqueos implícitos hacen que, dado que B ha
realizado un bloqueo X sobre R, A no pueda leer el registro, y deba esperarse hasta que
se llegue a un punto de sincronización (en este caso un rollback), y se libere el bloqueo.
El problema queda de este modo resuelto.

6.2.4.3 El problema del análisis inconsistente

Analicemos ahora el problema del análisis inconsistente, siguiendo los bloqueos
implícitos que se han definido:


    TRANSACCION A                       TIEMPO                   TRANSACCION B
     Traer CTA1 (40):                      T1
 (adquirir bloqueo S sobre
           CTA1)
        Suma = 40
     Traer CTA2 (50):                      T2
 (adquirir bloqueo S sobre
           CTA2)
        Suma = 90
                                           T3                      Traer CTA3 (30):
                                                              (adquirir bloqueo S sobre
                                                                         CTA3)
                                           T4                     Actualizar CTA3:
                                                              (adquirir bloqueo X sobre
                                                                         CTA3)
                                                                      CTA3 = 20
                                           T5                      Traer CTA1 (40):
                                                              (adquirir bloqueo S sobre
                                                                         CTA1)
                                           T6                     Actualizar CTA1:
                                                              (solicitar bloqueo X sobre
                                                                         CTA1)
                                                                       esperar, …
      Traer CTA3 (20):                     T7
 (solicitar bloqueo X sobre
            CTA3)
          esperar, …

De nuevo, se soluciona el problema del análisis inconsistente, puesto que ninguna
transacción finaliza y no genera resultados erróneos. Sin embargo, vuelve a aparecer el
problema del bloqueo mutuo que a continuación analizamos.

6.2.4.4 El bloqueo mutuo

Hemos visto que los bloqueos son capaces de resolver los principales problemas de
concurrencia, pero que al mismo tiempo pueden ocasionar problemas adicionales de
transacciones que entran en un tiempo de espera infinito. Este problema, que ha sido
claramente ilustrado en los ejemplos, se denomina bloqueo mutuo. Sin embargo, no



Tema 6: Administración de la base de datos                                             13
todas las posibilidades de bloqueos mutuos quedan representadas en los ejemplos ya
vistos. Supongamos el siguiente caso, que también origina un bloqueo doble:


   TRANSACCION A                       TIEMPO                   TRANSACCION B
 Adquirir bloqueo X sobre                 T1
            R1
                                           T2                Adquirir bloqueo X sobre
                                                                        R2
 Solicitar bloqueo X sobre                 T3
             R2
         Esperar, …
                                           T4                Solicitar bloqueo X sobre
                                                                         R1
                                                                     Esperar, …

Si se presenta un bloqueo mutuo, es deseable que el sistema lo detecte y lo rompa. Para
ello, es necesario elegir una de las transacciones que están paralizadas como víctima y
cancelarla, con lo que se liberan sus bloqueos y permite continuar a la otra transacción.

El tratamiento que los sistemas dan a la transacción víctima una vez cancelada es
variable. En algunos casos se reinician de forma automática las transacciones desde el
principio, suponiendo que no se va a volver a repetir el caso de bloqueo mutuo. En otros
casos, simplemente se avisa a la aplicación que maneja la transacción víctima que ha
sido objeto de una cancelación debido a un bloqueo mutuo, y es responsabilidad del
programador el tratar convenientemente estos problemas.




Tema 6: Administración de la base de datos                                            14

Contenu connexe

Tendances

Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Juan Anaya
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM Kamisutra
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencialiras loca
 
Vistas en mySql
Vistas en mySqlVistas en mySql
Vistas en mySqlEduardo Ed
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
 
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSINTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSitsl
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLLuiS YmAY
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidosChristian19121
 
Control de concurrencias investigación
Control de concurrencias investigaciónControl de concurrencias investigación
Control de concurrencias investigaciónJhoel Dgez Garcia
 
Distribución y fragmentación de datos
Distribución y fragmentación  de datosDistribución y fragmentación  de datos
Distribución y fragmentación de datosJosé Mendoza
 

Tendances (20)

Compiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo MinilenguajeCompiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
 
Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.
 
Diseño a Nivel de Componentes
Diseño a Nivel de ComponentesDiseño a Nivel de Componentes
Diseño a Nivel de Componentes
 
Recursividad
RecursividadRecursividad
Recursividad
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
 
3. diseño de bases de datos distribuidas
3. diseño de bases de datos distribuidas3. diseño de bases de datos distribuidas
3. diseño de bases de datos distribuidas
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Vistas en sql server
Vistas en sql server Vistas en sql server
Vistas en sql server
 
10.el diseño en el nivel de componentes
10.el diseño en el nivel de componentes10.el diseño en el nivel de componentes
10.el diseño en el nivel de componentes
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencia
 
Vistas en mySql
Vistas en mySqlVistas en mySql
Vistas en mySql
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSINTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
Metodo burbuja
Metodo burbujaMetodo burbuja
Metodo burbuja
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Control de concurrencias investigación
Control de concurrencias investigaciónControl de concurrencias investigación
Control de concurrencias investigación
 
Distribución y fragmentación de datos
Distribución y fragmentación  de datosDistribución y fragmentación  de datos
Distribución y fragmentación de datos
 

Similaire à Capitulo 6

Gestión de transacciones y administrador de la base de datos
Gestión de transacciones y administrador de la base de datosGestión de transacciones y administrador de la base de datos
Gestión de transacciones y administrador de la base de datosralbarracin
 
Gestión transacciones
Gestión transaccionesGestión transacciones
Gestión transaccionesralbarracin
 
Funciones del aministrador
Funciones del aministradorFunciones del aministrador
Funciones del aministradorsergio
 
Funciones del aministrador
Funciones del aministradorFunciones del aministrador
Funciones del aministradorsergio
 
Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_oooYuzel Sederap
 
Taller oracle ccfcffcfcfcfcfcffc
Taller oracle ccfcffcfcfcfcfcffcTaller oracle ccfcffcfcfcfcfcffc
Taller oracle ccfcffcfcfcfcfcffcjinkalel kalel
 
Taller oracle seguridad backup recovery 22092008
Taller oracle seguridad backup recovery 22092008Taller oracle seguridad backup recovery 22092008
Taller oracle seguridad backup recovery 22092008wilder sanchez
 
Gestion de datos[1].pdf
Gestion de datos[1].pdfGestion de datos[1].pdf
Gestion de datos[1].pdfMARIAQUIROS19
 
Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_oooYuzel Sederap
 
INFOSAN Delphi 453-602
INFOSAN Delphi  453-602INFOSAN Delphi  453-602
INFOSAN Delphi 453-602FRANCIACOCO
 
Administracion de base_de_datos
Administracion de base_de_datosAdministracion de base_de_datos
Administracion de base_de_datosLeonardoLpez43
 
Auditoria en oracle
Auditoria en oracleAuditoria en oracle
Auditoria en oraclevictdiazm
 
Inducción al diseño de una Base de Datos
Inducción al diseño de una Base de DatosInducción al diseño de una Base de Datos
Inducción al diseño de una Base de DatosJorge Luis Chalén
 

Similaire à Capitulo 6 (20)

Tema9
Tema9Tema9
Tema9
 
Tema9
Tema9Tema9
Tema9
 
Gestión de transacciones y administrador de la base de datos
Gestión de transacciones y administrador de la base de datosGestión de transacciones y administrador de la base de datos
Gestión de transacciones y administrador de la base de datos
 
Gestión transacciones
Gestión transaccionesGestión transacciones
Gestión transacciones
 
Funciones del aministrador
Funciones del aministradorFunciones del aministrador
Funciones del aministrador
 
Funciones del aministrador
Funciones del aministradorFunciones del aministrador
Funciones del aministrador
 
Db2 10 afinamiento
Db2 10   afinamientoDb2 10   afinamiento
Db2 10 afinamiento
 
Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_ooo
 
Abd2
Abd2Abd2
Abd2
 
Taller oracle ccfcffcfcfcfcfcffc
Taller oracle ccfcffcfcfcfcfcffcTaller oracle ccfcffcfcfcfcfcffc
Taller oracle ccfcffcfcfcfcfcffc
 
Taller oracle seguridad backup recovery 22092008
Taller oracle seguridad backup recovery 22092008Taller oracle seguridad backup recovery 22092008
Taller oracle seguridad backup recovery 22092008
 
Gestion de datos[1].pdf
Gestion de datos[1].pdfGestion de datos[1].pdf
Gestion de datos[1].pdf
 
Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_ooo
 
INFOSAN Delphi 453-602
INFOSAN Delphi  453-602INFOSAN Delphi  453-602
INFOSAN Delphi 453-602
 
Administracion de base_de_datos
Administracion de base_de_datosAdministracion de base_de_datos
Administracion de base_de_datos
 
Sql4
Sql4Sql4
Sql4
 
Auditoria en oracle
Auditoria en oracleAuditoria en oracle
Auditoria en oracle
 
Inducción al diseño de una Base de Datos
Inducción al diseño de una Base de DatosInducción al diseño de una Base de Datos
Inducción al diseño de una Base de Datos
 
C:\Fakepath\Bdiii
C:\Fakepath\BdiiiC:\Fakepath\Bdiii
C:\Fakepath\Bdiii
 
Funciones del aministrador[1]
Funciones del aministrador[1]Funciones del aministrador[1]
Funciones del aministrador[1]
 

Plus de Luis Gonzales (20)

Diag
DiagDiag
Diag
 
Textol
TextolTextol
Textol
 
radio
radioradio
radio
 
Roboticaycnc
RoboticaycncRoboticaycnc
Roboticaycnc
 
Lamaqdc
LamaqdcLamaqdc
Lamaqdc
 
81
8181
81
 
81
8181
81
 
Condeganizacion
CondeganizacionCondeganizacion
Condeganizacion
 
Inversionista I
Inversionista IInversionista I
Inversionista I
 
Rrpp
RrppRrpp
Rrpp
 
Proto
ProtoProto
Proto
 
Calidad En Las Organizaciones
Calidad En Las OrganizacionesCalidad En Las Organizaciones
Calidad En Las Organizaciones
 
Oi Unidad3
Oi Unidad3Oi Unidad3
Oi Unidad3
 
Oi Unidad4
Oi Unidad4Oi Unidad4
Oi Unidad4
 
Tema8
Tema8Tema8
Tema8
 
curgrap
curgrapcurgrap
curgrap
 
Capitulo 1
Capitulo 1Capitulo 1
Capitulo 1
 
Capitulo 3
Capitulo 3Capitulo 3
Capitulo 3
 
Capitulo 5
Capitulo 5Capitulo 5
Capitulo 5
 
Capitulo 4
Capitulo 4Capitulo 4
Capitulo 4
 

Dernier

Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaElizabethLpezSoto
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalEmanuelCastro64
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024anasofiarodriguezcru
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888ElianaValencia28
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.radatoro1
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfJoseAlejandroPerezBa
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskbydaniela5
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 

Dernier (20)

Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestría
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamental
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 

Capitulo 6

  • 1. 6 TEMA 6. ADMINISTRACIÓN DE LA BASE DE DATOS 6 TEMA 6. ADMINISTRACIÓN DE LA BASE DE DATOS .................................. 1 6.1 Seguridad de la base de datos ........................................................................... 2 6.1.1 Consideraciones generales de Seguridad.................................................. 2 6.1.2 Seguridad en SQL..................................................................................... 2 6.2 Recuperación y Concurrencia........................................................................... 5 6.2.1 Recuperación de transacciones................................................................. 5 6.2.2 Recuperación del sistema ......................................................................... 8 6.2.3 Problemas de concurrencia....................................................................... 9 6.2.4 El Bloqueo .............................................................................................. 11 Tema 6: Administración de la base de datos 1
  • 2. 6.1 Seguridad de la base de datos 6.1.1 Consideraciones generales de Seguridad Seguridad hace referencia a la protección de los datos contra una revelación, alteración o destrucción no autorizada. En otras palabras, seguridad implica asegurar que los usuarios están autorizados para llevar a cabo lo que tratan de hacer. El problema de la seguridad tiene muchos aspectos, entre los que cabe destacar: • Aspectos legales, sociales y éticos • Controles físicos • Cuestiones de política interna • Problemas de operación • Controles de equipo • Seguridad del sistema operativo • Materias de relevancia específica para el sistema de base de datos Nos vamos a limitar a este último punto, puesto que el resto dependen considerablemente del entorno particular de cada base de datos. Los objetos susceptibles de la aplicación de un mecanismo de seguridad pueden ser desde bases de datos completas hasta valores específicos en una fila y columna concreta de una tabla. Los mecanismos de seguridad deben garantizar que los usuarios sólo pueden realizar aquellas operaciones para las que están autorizados sobre ciertos objetos particulares. Por otro lado, hay que tener en cuenta que distintos usuarios pueden tener diferentes tipos de autorizaciones sobre los mismos objetos. Las medidas de seguridad de la información las toma el administrador de la base de datos, para lo que utiliza las herramientas proporcionadas por el lenguaje de operación de la base de datos. En el caso del SQL, el sistema cuenta con dos mecanismos diferentes implicados en el mantenimiento de la seguridad: el sistema de gestión de vistas, y el subsistema de autorización mediante el cual usuarios con derechos específicos pueden conceder de manera selectiva y dinámica esos derechos a otros usuarios, y después revocar esos derechos si lo desean. 6.1.2 Seguridad en SQL Las vistas pueden ser utilizadas con propósitos de seguridad, delimitando el acceso de los usuarios a ciertas porciones de la información. Veamos unos cuantos ejemplos que nos permiten distinguir distintas formas de aplicar seguridad a la base de datos: CREATE VIEW PROVEEDORES_DE_PARIS AS SELECT * FROM S WHERE CIUDAD = ‘PARIS’; /* Los usuarios de esta vista ven un subconjunto horizontal de la tabla */ Tema 6: Administración de la base de datos 2
  • 3. CREATE VIEW S#_NOMBRE_CIUDAD AS SELECT S#, NOMBRE, CIUDAD FROM S; /* Los usuarios de esta vista obtienen un subconjunto vertical de la tabla */ CREATE VIEW PARIS_S#_NOMBRE_CIUDAD AS SELECT S#, NOMBRE, CIUDAD FROM S WHERE CIUDAD = ‘PARIS’; /* Los usuarios de esta vista obtienen un subconjunto de filas y columnas */ CREATE VIEW MISTABLAS AS SELECT * FROM SYSTABLES WHERE CREATOR = USER; /* Se obtiene una vista de todas las tablas cuyo propietario es el usuario */ Las vistas, como ya se recordará de capítulos anteriores, pueden ser creadas utilizando la sintaxis siguiente: CREATE VIEW [user.]view [ ( alias [, alias] … ) ] AS query [WITH CHECK OPTION [CONSTRAINT constraint] ] Es importante destacar que el uso de ‘WITH CHECK OPTION’ garantiza que se puedan insertar registros en la tabla, a través de la vista, sólo si se cumple la condición de restricción especificada (por ejemplo, en la primera vista se podrán insertar ciudades que no sean París, a no ser que se utilice la opción ‘WITH CHECK OPTION’). Para completar los mecanismos de seguridad, como ya hemos indicado, es necesario disponer de ciertos mecanismos que nos permitan asignar a los usuarios permisos de acceso a tablas y vistas de la base de datos. Para ello se utilizan las sentencias GRANT y REVOKE, que ya han sido explicadas en temas anteriores. GRANT dabase_priv [, databse_priv] … TO user [, user] … [IDENTIFIED BY password [, password] … ] Siendo database_priv = DBA | CONNECT | RESOURCE GRANT RESOURCE [ (quota [k|m] ) ] ON tablespace TO { PUBLIC | user [, user] … } Siendo quota el espacio en bytes. GRANT { object_priv [, object_priv] … | ALL [PRIVILEGES] } ON [user.]object TO { user | PUBLIC } [, user] … [WITH GRANT OPTION] Siendo object_priv = ALTER | DELETE | INDEX | INSERT | REFERENCES | SELECT | UPDATE. Si se utiliza UPDATE o REFERENCES, se pueden especificar columnas. ================================ REVOKE { [CONNECT] [, RESOURCE] [,DBA] } FROM user [, user] Tema 6: Administración de la base de datos 3
  • 4. REVOKE space_privilege ON tablespace FROM user [, user] REVOKE {object_priv [, object_priv] … | ALL [PRIVILEGES] } ON [user.]object FROM {user | PUBLIC} [,user] … Tema 6: Administración de la base de datos 4
  • 5. 6.2 Recuperación y Concurrencia 6.2.1 Recuperación de transacciones Los problemas de recuperación y concurrencia en un sistema de base de datos están muy ligados a la noción de procesamiento de transacciones. Una transacción es una unidad lógica de trabajo. Dicho de otra forma, una transacción es una secuencia de operaciones en una base de datos mediante la cual un estado consistente de la base de datos se transforma en otro estado consistente, sin conservar por fuerza la consistencia en todos los estados intermedios. Ilustremos el caso con un ejemplo. Supongamos dos tablas (A y B) en una base de datos estrechamente relacionadas, de forma que cuando se introduce un dato en la tabla A hay que modificar por fuerza la tabla B para que se conserve la consistencia completa del sistema. En este caso, consideramos como una operación cada una de las modificaciones realizadas en cada tabla, mientras que una transacción es el conjunto de las modificaciones que hacen que la base de datos vuelva a estar en una forma consistente tras una primera modificación. Es claro que nuestro deseo es asegurarnos que tras una modificación en la tabla A va a tener lugar la correspondiente modificación en la tabla B. Sin embargo, esto no es siempre posible, puesto que el sistema puede caer en el momento más inoportuno (es decir, tras la primera operación). Sin embargo, si el sistema maneja el procesamiento de transacciones, podrá ofrecer algo muy cercano a esta garantía. Más específicamente, garantizará que si la transacción ejecuta algunas modificaciones (no todas) y se produce un fallo antes del final de la transacción, se anularán las modificaciones realizadas. De este modo, o la transacción se completa totalmente, o se anula totalmente. El componente del sistema encargado de lograr este propósito es el gestor de transacciones, y las operaciones en SQL COMMIT y ROLLBACK son la clave de su funcionamiento: COMMIT indica que una transacción ha finalizado con éxito al SGBD, mientras que ROLLBACK indica al SGBD que debe recuperar su estado justo en el momento anterior a comenzar la transacción que no ha podido finalizar (en su defecto, retornará al último estado de la base de datos en el que se realizó un COMMIT). La capacidad de realizar la recuperación se debe a que los SGBD mantienen un histórico de todas las operaciones de actualización realizadas en el sistema. Por tanto, si resulta necesario anular alguna modificación específica, el sistema puede utilizar la entrada concreta en el histórico para restaurar el valor original del objeto modificado. Aún con todo este mecanismo de recuperación, es posible que el sistema caiga justo después de haber realizado el COMMIT, sin que los datos se hayan almacenado físicamente en el disco. Los SGBD deben garantizar el COMMIT incluso en este supuesto (siempre y cuando el histórico haya almacenado físicamente la transacción antes de ejecutar el comando COMMIT), y lo hacen de forma que cuando el sistema se arranca de nuevo toma las transacciones que hayan podido quedar a la espera del COMMIT y las confirma en el sistema. Este método se conoce como protocolo de bitácora de escritura avanzada. Tema 6: Administración de la base de datos 5
  • 6. Para asegurar la integridad de los datos se necesita que el sistema de base de datos mantenga las siguientes propiedades de las transacciones: • Atomicidad. O todas las operaciones de la transacción se realizan adecuadamente en la base de datos, o ninguna de ellas. • Consistencia. La ejecución aislada de la transacción (es decir, sin otra transacción que se ejecute concurrentemente) conserva la consistencia de la base de datos. • Aislamiento. Aunque se ejecuten varias transacciones concurrentemente, el sistema garantiza que para cada par de transacciones T1 y T2, se cumple para T1 que T2 ha terminado su ejecución antes de que comience T1, o bien que T2 ha comenzado su ejecución después de que T1 termine. De este modo, cada transacción ignora al resto de las transacciones que se ejecuten concurrentemente en el sistema. • Durabilidad. Tras la finalización con éxito de una transacción, los cambios realizados en la base de datos permanecen, incluso si hay fallos en el sistema. Estas propiedades a menudo reciben el nombre de propiedades ACID; el acrónimo se obtiene de la primera letra de cada una de las cuatro propiedades en inglés (Atomicity, Consistency, Isolation, Durability). En ausencia de fallos, todas las transacciones se completan con éxito. Sin embargo, una transacción puede que no siempre termine su ejecución con éxito. Una transacción de este tipo se denomina abortada. Si se pretende asegurar la atomicidad, una transacción abortada no debe tener efecto sobre el estado de la base de datos. Así, cualquier cambio que haya hecho la transacción abortada sobre la base de datos debe deshacerse. Un vez que se han desecho los cambios realizados por la transacción abortada, se dice que la transacción se ha retrocedido. Una transacción que termina con éxito se dice que está comprometida. Una transacción comprometida que haya hecho modificaciones en la base de datos llevándola a un nuevo estado consistente, que permanece incluso si hay un fallo en el sistema. Cuando una transacción se ha comprometido, no se pueden deshacer sus efectos abortándola. La única forma de deshacer los cambios de una transacción comprometida es ejecutando una transacción compensadora. Sin embargo, no siempre se puede crear dicha transacción compensadora. Por tanto, se deja al usuario la responsabilidad de crear y ejecutar transacciones compensadoras, y no las gestiona el sistema de base de datos. Se puede precisar más lo que se entiende por terminación con éxito de una transacción, a través de un modelo simple abstracto de transacción. Una transacción debe estar en uno de los estados siguientes: • Activa. El estado inicial. La transacción permanece en este estado durante su ejecución. • Parcialmente comprometida. Después de ejecutarse la última instrucción. • Fallida. Tras descubrir que no puede continuar la ejecución normal. • Abortada. Después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción. • Comprometida. Tras completarse con éxito. Tema 6: Administración de la base de datos 6
  • 7. A continuación se muestra un diagrama de estados correspondiente al modelo que hemos definido: 2 4 3 parcialmente comprometida comprometida 1 1 activa 4 2 3 5 5 fallida abortada Se dice que una transacción se ha comprometido sólo si ha llegado al estado comprometida. Análogamente, se dice que una transacción ha abortado sólo si ha llegado al estado abortada. Una transacción se dice que ha terminado si ha llegado a alguno de estos dos estados. Un transacción comienza en el estado activa. Cuando acaba su última instrucción pasa al estado parcialmente comprometida. En este punto la transacción ha terminado su ejecución, pero es posible que aún tenga que ser abortada, puesto que los datos actuales pueden estar todavía en memoria principal, y puede producirse un fallo en el hardware antes de que se complete con éxito. El sistema de base de datos escribe en disco la información suficiente para que, incluso al producirse un fallo, puedan reproducirse los cambios hechos por la transacción al reiniciar el sistema tras el fallo. Cuando se termina de escribir esta información, la transacción pasa al estado comprometida. Una transacción llega al estado fallida después de que el sistema determine que dicha transacción no puede continuar su ejecución normal. Una transacción de este tipo se debe retroceder. Después, pasa al estado abortada. En este punto, el sistema tiene dos opciones: • Reiniciar la transacción, pero sólo si la transacción se ha abortado a causa de algún error hardware o software que no lo haya provocado la lógica interna de la transacción. Una transacción reiniciada se considera una nueva transacción. • Cancelar la transacción. Normalmente se hace esto si hay algún error interno lógico que sólo se puede corregir escribiendo de nuevo la secuencia de acciones que componen la transacción, o debido a una entrada incorrecta, o debido a que no se han encontrado los datos deseados en la base de datos. Tema 6: Administración de la base de datos 7
  • 8. 6.2.2 Recuperación del sistema El sistema debe estar preparado para recuperarse no sólo de fallos puramente locales, sino también de fallos globales. Un fallo local afecta sólo a la transacción en la que se presentó el fallo, mientras que un fallo global afecta a todas las transacciones que se estaban realizando en el momento del fallo. Ante un fallo global, el sistema deberá recuperarse de fallos del sistema y de fallos de los medios de almacenamiento: • Fallos del sistema, que afectan a todas las transacciones que se están realizando, pero no dañan físicamente a la base de datos. También se conocen como caídas suaves. • Fallos de los medios de almacenamiento, que causan daños a la base de datos o a una porción de ella, y afectan al menos a las transacciones que están utilizando esa porción. También se conocen como caídas duras. 6.2.2.1 Fallos del sistema El punto crítico en este tipo de fallos es que se pierde el contenido de la memoria principal. Por tanto, ya no se reconocerá el estado preciso de la transacción que se estuviera realizando en el momento del fallo. Esa transacción jamás se podrá finalizar, por lo que será necesario anularla al reiniciar el sistema. Incluso podría ser necesario volver a realizar ciertas transacciones cuya ejecución sí terminó con éxito antes de la caída pero cuyas modificaciones no lograron ser transferidas de los buffers a la base de datos física. Pero, ¿cómo sabe el sistema que transacciones debe volver a realizar y cuales debe anular?. Cada cierto intervalo de tiempo el sistema establece un punto de revisión de forma automática. Esto implica: 1. Grabar físicamente el contenido de los buffers en la base de datos física, y 2. Grabar físicamente un registro de punto de revisión especial en el histórico o bitácora física. El registro de punto de revisión incluye una lista de todas las transacciones que se estaban realizando en el momento de establecerse el punto de revisión. Tomemos el siguiente ejemplo explicativo: Tiempo T1 T2 T3 T4 T5 tv tf Tema 6: Administración de la base de datos 8
  • 9. Es evidente que deberán anularse las transacciones T3 y T5 y deberán realizarse de nuevo las transacciones T2 y T4. La T1 no entra en el proceso. Por tanto, al reiniciar el sistema se efectúa el siguiente procedimiento para identificar las transacciones T2 a T5: 1. Comenzar con dos listas de transacciones: ANULAR y REPETIR, e incluir en la lista ANULAR todas las transacciones incluidas en el punto de revisión. Dejar vacía la lista REPETIR. 2. Examinar la bitácora hacia delante a partir del registro del punto de revisión. 3. Si se encuentra una entrada de bitácora de “iniciar transacción” para la transacción T, añadir T a la lista ANULAR. 4. Si se encuentra una entrada de bitácora de “comprometer” para la transacción T, pasar T de la lista ANULAR a la de REPETIR. 5. Cuando se llegue al final de la bitácora, proceder a anular y repetir respectivamente las transacciones de las listas ANULAR y REPETIR. Cuando finalice este proceso, el sistema estará preparado para aceptar trabajos nuevos. 6.2.2.2 Fallos de los medios de almacenamiento Un fallo de los medios de almacenamiento es un percance donde se destruye físicamente alguna porción de la base de datos. Este fallo implica el restaurar la base de datos a partir de una copia de seguridad y utilizar después la bitácora para realizar de nuevo todas las transacciones terminadas desde que se realizó dicha copia de seguridad. No será necesario anular las transacciones no finalizadas puesto que por definición estas transacciones se anularon (destruyeron) de todas maneras. 6.2.3 Problemas de concurrencia La mayoría de los SGBD son multiusuario. En estos sistemas se necesita un mecanismo de control de concurrencia para asegurar que ninguna transacción concurrente interfiera con las operaciones de las demás. Sin este tipo de mecanismos pueden surgir muchos problemas, entre los que veremos los más significativos. Son tres los errores que pueden presentarse, es decir, tres situaciones en las que una transacción, aunque correcta en sí, puede producir de todos modos un resultado incorrecto debido a una interferencia por parte de alguna otra transacción: 1. El problema de la modificación perdida. 2. El problema de la dependencia no comprometida 3. El problema del análisis inconsistente 6.2.3.1 El problema de la modificación perdida Consideremos la siguiente situación: TRANSACCION A TIEMPO TRANSACCION B Leer registro R T1 T2 Leer registro R Actualizar registro R T3 T4 Actualizar registro R Tema 6: Administración de la base de datos 9
  • 10. Es evidente que la modificación realizada por la transacción A se pierde porque la transacción B sobreescribe el resultado sobre el resultado anterior. 6.2.3.2 El problema de la dependencia no comprometida Este problema se presenta cuando se permite a una transacción leer (o modificar) un registro que ha sido puesto al día por otra transacción, y esta última todavía no la ha comprometido. Es evidente que existe la posibilidad de que nunca se comprometa, lo cual indicaría que los datos transitorios podrían no ser correctos y generar un error encadenado en otras transacciones. TRANSACCION A TIEMPO TRANSACCION B T1 Actualizar registro R Leer registro R T2 T3 Rollback TRANSACCION A TIEMPO TRANSACCION B T1 Actualizar registro R Actualizar registro R T2 T3 Rollback En la primera de estas dos situaciones, A está trabajando con un valor de un registro incorrecto o inexistente. En el segundo caso, la actualización del registro se deshace en T3 debido al Rollback solicitado por B. 6.2.3.3 El problema del análisis inconsistente Supongamos el siguiente caso, con valores iniciales de CTA1 = 40, CTA2 = 50, y CTA3 = 30: TRANSACCION A TIEMPO TRANSACCION B Traer CTA1 (40): T1 Suma = 40 Traer CTA2 (50): T2 Suma = 90 T3 Traer CTA3 (30): T4 Actualizar CTA3: CTA3 = 20 T5 Traer CTA1 (40): T6 Actualizar CTA1: CTA1 = 50 T7 COMMIT Traer CTA3 (20): T8 Suma = 110 No encontramos con la situación de que el resultado de una transacción ha interferido claramente en el resultado de otra de duración mayor. El resultado 110 es incorrecto, y por tanto decimos que A ha realizado un análisis inconsistente. Tema 6: Administración de la base de datos 10
  • 11. 6.2.4 El Bloqueo El bloqueo es la técnica más usual que se utiliza para resolver problemas de concurrencia. La noción básica de bloqueo es simple: cuando una transacción requiere la seguridad de que algún objeto en la cual está interesada no cambiará de alguna manera no predecible sin que ella se dé cuenta, adquiere un bloqueo sobre ese objeto, con lo que ninguna transacción podrá leer ni modificar dicho objeto. El bloqueo funciona del siguiente modo: 1. Primero suponemos la existencia de dos tipos de bloqueo, bloqueos exclusivos (X) y bloqueos compartidos (S), definidos en los siguientes dos puntos. 2. Si la transacción A tiene un bloqueo exclusivo (X) sobre el registro R, una solicitud por parte de una transacción B de cualquier tipo de bloqueo sobre R hará que B entre en un estado de espera. B espera hasta que A libere el bloqueo. 3. Si una transacción A tiene un bloqueo compartido (S) sobre el registro R: a) una solicitud por parte de una transacción B de bloqueo X sobre R hará que B entre en un estado de espera, y B espera hasta que se libere el bloqueo de A; b) una solicitud por parte de una transacción B de un bloqueo S sobre R será concedida, y B tendrá también ahora un bloqueo sobre R. Veamos todo esto en una matriz de compatibilidad: X S - X N N S S N S S - S S S Interpretación: Consideremos un registro R, y que una transacción A tiene algún bloqueo sobre R tal y como lo indican las entradas en las cabeceras de las columnas. Supongamos que una transacción B emite una solicitud de bloqueo sobre R tal y como indica la primera columna. Una N indica un conflicto (B entra en un estado de espera), y S indica compatibilidad. 4. Las solicitudes de bloqueo sobre registros por parte de las transacciones son implícitas en condiciones normales. Cuando una transacción lee con éxito un registro, adquiere de forma automática un bloqueo S sobre él, y cuando lo actualiza, adquiere un bloqueo X. 5. Los bloqueos X se mantienen hasta el siguiente punto de sincronización. Lo normal es que los bloqueos S se mantengan de igual forma. Veamos ahora cómo se resolverían los tres problemas de concurrencia que hemos descrito con anterioridad utilizando los bloqueos. En cada caso podremos obtener la secuencia de acciones llevadas a cabo por cada transacción, y los periodos de espera en los que se encuentran cada una, así como el tipo de bloqueos utilizado en cada caso. Tema 6: Administración de la base de datos 11
  • 12. 6.2.4.1 El problema de la modificación perdida TRANSACCION A TIEMPO TRANSACCION B Leer registro R T1 (adquirir bloqueo S) T2 Leer registro R (adquirir bloqueo S) Actualizar registro R T3 (solicitar bloqueo X) esperar, esperar, … T4 Actualizar registro R (solicitar bloqueo X) esperar, esperar, … Las operaciones de lectura llevan implícito un bloqueo S, y las de escritura un bloqueo X, con lo que siguiendo la secuencia en el tiempo, las dos transacciones quedan en un tiempo de espera infinito, y no se pierde ninguna modificación (porque no se realiza). Esto, sin embargo, nos lleva a un problema que trataremos un poco más adelante: el bloqueo mutuo. 6.2.4.2 El problema de la dependencia no comprometida TRANSACCION A TIEMPO TRANSACCION B T1 Actualizar registro R (bloqueo X) Leer registro R T2 (solicitar bloqueo S) esperar, … T3 Rollback (liberar el bloqueo X) Continuar: Leer R T4 (adquirir bloqueo S) TRANSACCION A TIEMPO TRANSACCION B T1 Actualizar registro R (bloqueo X) Actualizar registro R T2 (solicitar bloqueo X) esperar, … T3 Rollback (liberar el bloqueo X) Continuar: Actualizar R T4 (adquirir bloqueo X) Tema 6: Administración de la base de datos 12
  • 13. Como se puede apreciar en las nuevas tablas que reproducen el caso del problema descrito en un apartado anterior, los bloqueos implícitos hacen que, dado que B ha realizado un bloqueo X sobre R, A no pueda leer el registro, y deba esperarse hasta que se llegue a un punto de sincronización (en este caso un rollback), y se libere el bloqueo. El problema queda de este modo resuelto. 6.2.4.3 El problema del análisis inconsistente Analicemos ahora el problema del análisis inconsistente, siguiendo los bloqueos implícitos que se han definido: TRANSACCION A TIEMPO TRANSACCION B Traer CTA1 (40): T1 (adquirir bloqueo S sobre CTA1) Suma = 40 Traer CTA2 (50): T2 (adquirir bloqueo S sobre CTA2) Suma = 90 T3 Traer CTA3 (30): (adquirir bloqueo S sobre CTA3) T4 Actualizar CTA3: (adquirir bloqueo X sobre CTA3) CTA3 = 20 T5 Traer CTA1 (40): (adquirir bloqueo S sobre CTA1) T6 Actualizar CTA1: (solicitar bloqueo X sobre CTA1) esperar, … Traer CTA3 (20): T7 (solicitar bloqueo X sobre CTA3) esperar, … De nuevo, se soluciona el problema del análisis inconsistente, puesto que ninguna transacción finaliza y no genera resultados erróneos. Sin embargo, vuelve a aparecer el problema del bloqueo mutuo que a continuación analizamos. 6.2.4.4 El bloqueo mutuo Hemos visto que los bloqueos son capaces de resolver los principales problemas de concurrencia, pero que al mismo tiempo pueden ocasionar problemas adicionales de transacciones que entran en un tiempo de espera infinito. Este problema, que ha sido claramente ilustrado en los ejemplos, se denomina bloqueo mutuo. Sin embargo, no Tema 6: Administración de la base de datos 13
  • 14. todas las posibilidades de bloqueos mutuos quedan representadas en los ejemplos ya vistos. Supongamos el siguiente caso, que también origina un bloqueo doble: TRANSACCION A TIEMPO TRANSACCION B Adquirir bloqueo X sobre T1 R1 T2 Adquirir bloqueo X sobre R2 Solicitar bloqueo X sobre T3 R2 Esperar, … T4 Solicitar bloqueo X sobre R1 Esperar, … Si se presenta un bloqueo mutuo, es deseable que el sistema lo detecte y lo rompa. Para ello, es necesario elegir una de las transacciones que están paralizadas como víctima y cancelarla, con lo que se liberan sus bloqueos y permite continuar a la otra transacción. El tratamiento que los sistemas dan a la transacción víctima una vez cancelada es variable. En algunos casos se reinician de forma automática las transacciones desde el principio, suponiendo que no se va a volver a repetir el caso de bloqueo mutuo. En otros casos, simplemente se avisa a la aplicación que maneja la transacción víctima que ha sido objeto de una cancelación debido a un bloqueo mutuo, y es responsabilidad del programador el tratar convenientemente estos problemas. Tema 6: Administración de la base de datos 14