2008-08-31 11 views

Respuesta

2

En Oracle en el modo de funcionamiento por defecto es el lectura confirmada nivel de aislamiento en una instrucción de selección no está bloqueado por otra transacción modificar el datos que está leyendo. De Data Concurrency and Consistency:

Cada consulta ejecutada por una transacción sólo ve los datos que se cometió antes de la consulta (no la transacción) comenzó. Una consulta de Oracle nunca lee datos sucios (no confirmados).

3

En SQL Server puede usar la palabra clave with (nolock) en sus instrucciones de selección. Por ejemplo:

Select table1.columna, table2.columna 
from table1 with(nolock), table2 with(nolock) 

Asegúrese de especificar con (nolock) para cada tabla/vista en la consulta.

+0

O "establecer el nivel de aislamiento de transacción read_uncommitted" una vez. – Constantin

+0

Lo que significa que usted lee datos 'no comprometidos' con posibles resultados desastrosos: http://stackoverflow.com/questions/686724/sql-when-should-you-use-with-nolock/686733#686733 A menudo esto no es un problema, especialmente con las 'nuevas' características de instantáneas, pero debe tener en cuenta las consecuencias: http://www.codinghorror.com/blog/2008/08/deadlocked.html –

2

En Firebird los escritores nunca bloquean los lectores y no hay lecturas sucias. Solo niveles de aislamiento de lectura confirmada e instantánea.
Utiliza un motor multigeneracional (como creo que oráculo) en lugar de bloqueo simple de página o registro.

2

PostgreSQL también utiliza MVCC (control de concurrencia de varias versiones), por lo que al usar el nivel de aislamiento de transacción predeterminado (read-committed), nunca debe bloquear, a menos que alguien esté haciendo mantenimiento en la base de datos (dropping/adding columns/tables/índices/etc).

Cuestiones relacionadas