mas informacion sobre transacciones

26/05/2008 - 22:50 por Imac_Man | Informe spam
Amigos,

mi problema es el que sigue, estoy usando transacciones sin especificar el
isolate level en una aplicacion pero sucede que mientras esta, esta activa
bloquea a otros usuarios en las lecturas a las tablas afectadas por la
transaccion, como puedo evitar que los usuarios tengan que esperar a que la
transaccion se complete para que puedan leer de la misma tabla. (esto hace
parecer que el programa esta atascado o la conexion es lenta)

Gracias de antemano por la ayuda.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
27/05/2008 - 08:31 | Informe spam
"Imac_Man" wrote in message
news:
mi problema es el que sigue, estoy usando transacciones sin especificar el
isolate level en una aplicacion pero sucede que mientras esta, esta activa
bloquea a otros usuarios en las lecturas a las tablas afectadas por la
transaccion, como puedo evitar que los usuarios tengan que esperar a que
la
transaccion se complete para que puedan leer de la misma tabla. (esto hace
parecer que el programa esta atascado o la conexion es lenta)



Bueno, lo primero que hay que pensar es que una transacción no debería
durar más de unas milésimas de segundo, por lo que los usuarios no deberían
de notar el pequeño atasco que se produce mientras la transacción termina.
Si una transacción dura demasiado, habría que estudiarla y ver si se puede
optimizar: ¿es problema de la base de datos - sobran o faltan índices? ¿Es
problema de que no se han recogido todos los datos que deben intervenir
ANTES de empezar la transacción, y está esperando alguna operación de E/S
externa a la BD?

Si no hay forma de reducir la duración de la transacción, se puede
evitar que ponga bloqueos de lectura poniéndole el nivel de aislamiento más
bajo (ReadUncommitted), pero esto tiene el inconveniente de que los otros
usuarios pueden leer los datos que la transacción ha grabado pero de los
cuáles todavía no ha hecho el Commit. ¿Qué pasa si hace un RollBack? Los
otros procesos habrían leído datos "falsos", que nunca han llegado a ser
dados por "buenos".
Respuesta Responder a este mensaje
#2 Imac_Man
27/05/2008 - 20:10 | Informe spam
Muchas gracias por la informacion, me ha sido de gran ayuda

"Alberto Poblacion" wrote:

"Imac_Man" wrote in message
news:
> mi problema es el que sigue, estoy usando transacciones sin especificar el
> isolate level en una aplicacion pero sucede que mientras esta, esta activa
> bloquea a otros usuarios en las lecturas a las tablas afectadas por la
> transaccion, como puedo evitar que los usuarios tengan que esperar a que
> la
> transaccion se complete para que puedan leer de la misma tabla. (esto hace
> parecer que el programa esta atascado o la conexion es lenta)

Bueno, lo primero que hay que pensar es que una transacción no debería
durar más de unas milésimas de segundo, por lo que los usuarios no deberían
de notar el pequeño atasco que se produce mientras la transacción termina.
Si una transacción dura demasiado, habría que estudiarla y ver si se puede
optimizar: ¿es problema de la base de datos - sobran o faltan índices? ¿Es
problema de que no se han recogido todos los datos que deben intervenir
ANTES de empezar la transacción, y está esperando alguna operación de E/S
externa a la BD?

Si no hay forma de reducir la duración de la transacción, se puede
evitar que ponga bloqueos de lectura poniéndole el nivel de aislamiento más
bajo (ReadUncommitted), pero esto tiene el inconveniente de que los otros
usuarios pueden leer los datos que la transacción ha grabado pero de los
cuáles todavía no ha hecho el Commit. ¿Qué pasa si hace un RollBack? Los
otros procesos habrían leído datos "falsos", que nunca han llegado a ser
dados por "buenos".


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida