La coordinación de recursos globales en un entorno RAC.

En ambientes de una sola instancia, los mecanismos de lockeo coordinan el acceso a recursos comunes como ser una simple fila de una tabla. Los mecanismos de lockeo previenen la posibilidad de que dos procesos modifiquen un mismo recurso al mismo tiempo.

En entornos RAC, la sincronización “internodo” es crítica para mantener una adecuada coordinación entre los distintos procesos en diferentes nodos, previniendo que estos procesos modifiquen el mismo recurso al mismo tiempo. La sincronizacion internodo garantiza que cada instancia vea la versión más reciente de un bloque de la buffer cache.

RAC utiliza lo que se conoce como Global Resource Directory (GRD) para registrar información sobre cómo los recursos son utilizados dentro de una base de datos en cluster. Global Cache Services (GCS) y Global Enqueue Services (GES) administran la información del GRD.

Cada instancia mantiene una parte de la GRD en su propia SGA. GCS y GES nominan a una intancia para administrar la información particular de un recurso. Esta instancia es llamada Resource Master. De este modo cada instancia sabe en que instancia está masterizado cada recurso.

Mantener una cache coherente es también una parte muy importante dentro de la actividad de un RAC. El algoritmo Cache fusion es el encargado de mantener una cache coherente utilizando técncias que mantienen múltiples copias consistentes de un mismo bloque entre diferentes instancias Oracle. Este algoritmo es implementado por GCS.

GES administra todos los recursos interinstancia que no maneja Oracle Fusion: dictionary cache locks, library cache locks, deadlock detection.

4 comentarios

  1. Agradezco mucho el empeño y te felicito por este trabajo de divulgación y formación, pero por favor, si existe una palabra común y con suficiente significado en castellano por qué no utilizarla?.

    lokeo, mejor bloqueo, no😉

  2. Muchas gracias por tu comentario.

    A veces no resulta facil encontrar las palabras adecuadas en castellano. Yo utilizo la palabra “lockeo” (lock) para referirme al mecanismo por el cual se toma un recurso de modo tal que no pueda ser modificado por otra sesion/transaccion/proceso. En cambio, utilizo la palabra bloqueo (block) para referirme al escenario en que una sesion/transaccion/proceso esta “detenida” esperando por un recurso “lockeado” por otra sesion/transaccion/proceso.

    En sintesis, necesito dos palabras en castellano para traducir los terminos lock y block (que claramente no son lo mismo).

    Atentamente,
    Fernando.

  3. Creo que las palabras adecuadas son “cerrojo” y “bloqueo”.

    “Cerrojo”, para “lock”, lo que impide que dos personas usen a la vez el mismo recurso, como se consigue con el cerrojo del cuarto de baño.

    “Block” sería “bloqueo”, la situación por la que algo no puede avanzar, porque algo se lo impide, hasta que ocurra un determinado suceso.

  4. Raul,

    Muchas gracias por tu valioso aporte.

    Fernando.


Comments RSS TrackBack Identifier URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s