Compartir a través de


Simultaneidad

La simultaneidad en la capacidad de que varios usuarios tengan acceso a los datos al mismo tiempo. Cuando el número de operaciones simultáneas que puede admitir el motor de base de datos es grande, se aumenta la simultaneidad de la base de datos. En Microsoft SQL Server Compact, el control de simultaneidad se consigue utilizando bloqueos que ayudan a proteger los datos. Los bloqueos controlan el modo en el que los distintos usuarios pueden tener acceso y cambiar los datos compartidos al mismo tiempo sin entrar en conflicto entre ellos. Para obtener más información, vea Bloquear (SQL Server Compact).

Problemas de simultaneidad

Si no se administra la modificación y lectura de datos por parte de varios usuarios, pueden producirse problemas de simultaneidad. Por ejemplo, si varios usuarios intentan tener acceso a una base de datos al mismo tiempo, sus transacciones podrían tratar de realizar operaciones sobre los mismos datos al mismo tiempo. Entre los problemas de simultaneidad que podrían producirse al usar SQL Server Compact se encuentran los siguientes:

  • Actualizaciones perdidas.

    Las actualizaciones pueden perderse si dos o más transacciones seleccionan la misma fila y, a continuación, intentan actualizar esa fila basándose en el valor seleccionado originalmente. La última actualización sobrescribe las actualizaciones realizadas por las demás transacciones, lo que da lugar a una pérdida de datos.

  • Análisis contradictorios (lecturas no repetibles).

    Las lecturas no repetibles se producen cuando una segunda transacción tiene acceso a la misma fila varias veces y lee datos distintos en cada ocasión. Para ello son necesarias varias lecturas de la misma fila. En cada ocasión, la información es modificada por otra transacción.

  • Lecturas fantasma.

    Las lecturas fantasma se producen al realizarse una acción de inserción o eliminación en una fila que pertenece a un intervalo de filas que está siendo leído por una transacción. La primera lectura del intervalo de filas por parte de la transacción muestra una fila que ha dejado de existir en las siguientes lecturas, ya que ha sido eliminada por otra transacción. Del mismo modo, y debido a la inserción de una fila por parte de otra transacción, las siguientes lecturas de la transacción mostrarán una fila que no existía en la primera lectura.

Nota

Un problema de simultaneidad muy frecuente que no afecta a SQL Server Compact es el de la dependencia no confirmada (lectura no actualizada). Este problema se produce cuando una segunda transacción selecciona una fila que está siendo actualizada por otra transacción. La segunda transacción lee datos que no han sido confirmados aún y pueden ser modificados por la transacción que está actualizando la fila. Las lecturas no actualizadas pueden producirse al usar MicrosoftSQL Server. Para obtener más información acerca de los problemas de simultaneidad, vea el tema sobre efectos de la simultaneidad en los Libros en pantalla de SQL Server.

Control de simultaneidad

En el caso de una base de datos, existen dos tipos de mecanismos de control de simultaneidad:

  • Control de simultaneidad optimista

    El control de simultaneidad optimista funciona partiendo de la base que los conflictos de recursos entre varios usuarios son poco probables, por lo que permite que las transacciones se ejecuten sin bloquear los recursos. Los recursos solo se comprueban cuando las transacciones tratan de cambiar los datos. De esta forma se determina si se ha producido algún conflicto (por ejemplo, comprobando el número de versión). Si tiene lugar un conflicto, la aplicación debe leer los datos y tratar de realizar de nuevo el cambio. El producto no incluye control de simultaneidad optimista, pero puede incorporarla manualmente en su aplicación de forma manual realizando un seguimiento de los accesos a la base de datos.

  • Control de simultaneidad pesimista

    El control de simultaneidad pesimista bloquea los recursos según sea necesario mientras dura una transacción. SQL Server Compact admite el control de simultaneidad pesimista que bloquea los recursos según sea necesario mientras dura una transacción.

Para obtener más información acerca de la simultaneidad optimista y pesimista, vea el tema sobre tipos de control de simultaneidad en los Libros en pantalla de SQL Server.

Nota

Algunos escenarios de la plataforma de 64 bits no admiten el acceso simultáneo a un archivo de base de datos con las versiones anteriores de SQL Server Compact. Para obtener información acerca de los componentes de 64 bits, vea Administrar las aplicaciones de base de datos de 64 bits.

Vea también

Conceptos

Transacciones (SQL Server Compact)

Bloquear (SQL Server Compact)

Acceso multiusuario