Concurrencia En Base De Datos
Rose16872 de Septiembre de 2012
4.051 Palabras (17 Páginas)1.267 Visitas
1.2 INTRODUCCIÓN A LAS TRANSACCIONES Y BLOQUEOS
Transacciones
Las transacciones aseguran que varias modificaciones a los datos se procesan como una unidad; esto se conoce como atomicidad. Por ejemplo, una transacción bancaria podría abonar en una cuenta y cargar en otra. Los dos pasos se deben completar al mismo tiempo. SQL Server acepta que el proceso de transacciones administre varias transacciones.
Bloqueos
Los bloqueos impiden los conflictos de actualización. Los usuarios no pueden leer o modificar los datos que están en proceso de modificación por parte de otros usuarios. Por ejemplo, si desea calcular una función de agregado y asegurarse de que otra transacción no modifique el conjunto de datos que se utiliza para calcular la función de agregado, puede solicitar que el sistema establezca bloqueos en los datos. Tenga en cuenta los siguientes hechos acerca de los bloqueos:
Los bloqueos hacen posible la serialización de transacciones de forma que sólo una persona a la vez pueda modificar un elemento de datos. Por ejemplo, en un sistema de reservas de una línea aérea los bloqueos aseguran que sólo se asigne un asiento concreto a una persona.
1.2.1 ADMINISTRADOR DE TRANSACCIONES
Garantiza las propiedades ACID para todos los programas bajo su protección.
Los monitores se especializan en la administración de transacciones desde su punto de origen (por lo general en el cliente), ya través de uno o más servidores, para luego volver al cliente originario. Cuando una T llega a su fin, el monitor de TP debe cerciorarse de que todos los sistemas involucrados en ella queden en estado consistente. De esta forma un monitor de TP sabe cómo correr T, enrutarlas entre diferentes sistemas, equilibrar las cargas de ejecución y ponerlas nuevamente en marcha después de una falla. Todo esto sin importar los sistemas, ni los administradores de recursos.
Surgen de la necesidad de correr aplicaciones capaces de atender a cientos o miles de clientes, ya que los monitores permiten conectar en tiempo real a miles de clientes que esperan un servicio, sin necesidad de consumir tantos recursos.
1.2.2 BLOQUEOS Y TRANSACCIONES CON SQL
SQL Server establece y ajusta dinámicamente el nivel de bloqueo apropiado durante una transacción. También se puede controlar manualmente cómo se utilizan algunos de los bloqueos.
Los bloqueos son necesarios para que las transacciones simultáneas permitan que los usuarios tengan acceso y actualicen los datos al mismo tiempo. La alta simultaneidad significa que hay varios usuarios que consiguen un buen tiempo de respuesta con pocos conflictos. Desde la perspectiva del administrador del sistema, los problemas principales son el número de usuarios, el número de transacciones y el rendimiento. Desde la perspectiva del usuario, la preocupación principal es el tiempo de respuesta.
La norma SQL especifica que una transacción comienza implícitamente cuando se ejecuta una instrucción SQL. Una de las siguientes instrucciones SQL debe finalizar la transacción:
Commit work compromete la transacción actual; es decir, hace que los cambios realizados por la transacción sean permanentes en la base de datos. Después de que se comprometa la transacción se inicia una nueva transacción automáticamente.
Rollback work causa el retroceso de la transacción actual; es decir, deshace todas las actualizaciones realizadas por las instrucciones SQL de la transacción; así, el estado de la base de datos se restaura al que existía previo a la ejecución de la transacción.
1.2.3 ADMINISTRACIÓN DE LOS BLOQUEOS
Los bloqueos se administran internamente mediante el Database Engine (Motor de base de datos) de Microsoft SQL Server. Los bloqueos se adquieren y liberan automáticamente en función de las acciones llevadas a cabo por el usuario.
Si no se utiliza el bloqueo y varios usuarios actualizan los mismos datos a la vez, es posible que la información de la base de datos deje de ser correcta desde un punto de vista lógico. En este caso, puede que las consultas ejecutadas en esos datos generen resultados inesperados.
Una aplicación nunca realiza una solicitud directa de un bloqueo. En lugar de ello, cuando se inicia una transacción y se ejecutan comandos del lenguaje de consulta, lenguaje de manipulación de datos (DML) o lenguaje de definición de datos (DDL) en la transacción, SQL Server Compact Edition bloquea los recursos necesarios para ayudar a protegerlos con el nivel de aislamiento SQL Server Compact Edition determina de forma automática cuándo deben concederse y liberarse los bloqueos para todos los recursos. De manera predeterminada, el bloqueo de filas se utiliza para las páginas de datos y el de páginas para las páginas de índice. Para preservar los recursos del sistema, el administrador de bloqueos realiza automáticamente las extensiones de bloqueo cuando se supera un umbral configurable en el número de bloqueos de filas. El número máximo de bloqueos que puede asignarse por sesión en el administrador de bloqueos es de 262.143
1.3 CONCEPTO DE CONTROL DE CONCURRENCIA
Es la actividad de coordinar accesos concurrentes a la base de datos, permite a los usuarios acceder a la base de datos de una forma multiprogramada mientras se mantiene la imagen de que cada usuario está utilizándola solo en sistema dedicado. Asegura que transacciones múltiples sometidas por usuarios diferentes no interfieran unas con otras de forma que se produzcan resultados incorrectos. El control de concurrencia en base de datos distribuidas es más compleja que en sistemas centralizados. Un aspecto interesante del control de concurrencia es el manejo de interbloqueos, el sistema no debe permitir que dos o más transacciones se bloqueen entre ellas.
1.4 CONCURRENCIA
DEFINICION
La concurrencia es un fenómeno que se presenta en varios contextos. Uno de ellos es la multiprogramación ya que el tiempo del procesador es compartido dinámicamente por varios procesos. Otro caso son las aplicaciones estructuradas, donde la programación estructurada se implementa como un conjunto de procesos concurrentes. Y por último se tiene que la misma estructuración recién mencionada es utilizada en el diseño de los sistemas operativos, los cuales se implementan como un conjunto de procesos.
El termino concurrencia se refiere al hecho de que los DBMS(SISTEMAS DE ADMINISTRACION DE BD)permiten que muchas transacciones puedan accesar a una misma base de datos a la vez..
En un sistema de estos se necesitan algún tipo de mecanismos de control de concurrencia para asegurar que las transacciones concurrentes no interfieran entre si.
En sistemas multiusuario, es necesario un mecanismo para controlar la concurrencia. Se pueden producir inconsistencias importantes derivadas del acceso concurrente, como por ejemplo, el problema de la operación perdida.
En un sistema de biblioteca, existe un campo que almacena el número de copias disponibles para préstamo. Este campo debe incrementarse en uno cada vez que se devuelve un ejemplar del libro y disminuirse en uno cada vez que se presta un ejemplar.
El objetivo fundamental del control de concurrencia de base de datos es garantizar que la ejecución concurrente de transacciones no resulta en una pérdida de consistencia de la base de datos.
La concurrencia se da cuando dos transacciones están interconectadas, lo que es común en un entorno multiusuario. Así pues en un entorno de multiprogramación es posible ejecutar varias transacciones de manera concurrente.
1.4.1 GRANULARIDAD
La granularidad de los esquemas internos es el grado de detalle de éstos en función del esquema lógico.
Cuanto más fina es la granularidad (a nivel de campo de registro es más fina que a nivel de registro completo) se consigue mayor grado de independencia de los datos.
1.4.2 TIPOS DE BLOQUEOS
Bloqueo o seguro: Se puede definir bloqueo (también llamado seguro o candado) como "una variable asociada a cada elemento de datos, que describe el estado de dicho elemento respecto a las posibles operaciones (recuperación o actualización) que se pueden realizar sobre ellos en cada momento".
Las transacciones pueden llevar a cabo bloqueos, por ejemplo, sobre los registros que vayan a utilizar, impidiendo a otros usuarios la recuperación o actualización de los elementos bloqueados, pudiéndose así evitar inconsistencias en el acceso concurrente.
Los bloqueos pueden ser de varios tipos:
- Bloqueos exclusivos (o de escritura): Cuando una transacción mantiene un bloqueo de este tipo sobre un objeto, ninguna otra transacción puede acceder a él, ni adquirir ningún tipo de bloqueo sobre ese objeto, hasta que sea liberado por la transacción que lo había retenido. Este tipo de bloqueos se utiliza cuando una transacción quiere actualizar algún objeto.
- Bloqueos compartidos (o de lectura): Cuando una transacción tiene sobre un objeto un bloqueo de tipo compartido, permite que otras transacciones retengan también ese mismo objeto en bloqueos compartidos, pero no exclusivos. Este tipo de bloqueo se utiliza cuando las transacciones no necesitan actualizar datos, pero quieren impedir cualquier modificación de éstos mientras son consultados.
Los bloqueos pueden colocarse, ya sea de manera automática por el DBMS o por medio de un comando emitido al DBMS partiendo del programa de aplicación del usuario de la consulta. Los bloqueos colocados por el DBMS se llaman
...