¿Cómo evito los bloqueos de lectura en mi base de datos?¿Cómo evito los bloqueos de lectura en mi base de datos?
¡Bienvenido a las bases de datos!
¿Cómo evito los bloqueos de lectura en mi base de datos?¿Cómo evito los bloqueos de lectura en mi base de datos?
¡Bienvenido a las bases de datos!
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).
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.
O "establecer el nivel de aislamiento de transacción read_uncommitted" una vez. – Constantin
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 –
Jeff Atwood tiene un buen post sobre este tema:
Resuma por lo menos las respuestas en lugar de enlaces directos. Este enlace ahora está muerto. – Joseph
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.
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).
¿No hace las lecturas? – CodingBarfield