Concurrencia de datos

07/01/2007 - 01:31 por fac | Informe spam
Buenas foro, queria saber que consideraciones debo tener para no tener
problemas por concurrencia de usuarios, me explico, el sistema esta hecho en
vb 6 con sql server 2000 y cuando uno realiza una transaccion en el sistema,
todo funciona bien, pero si ingresan varios, el sistema acepta a 1 o 2 y a
los demas los rechaza, en las consultas uso el (nolock) y en los update
(rowlock), asi como en las vistas y en los inserts, pero hacen las pruebas y
sigue el problema, no se que mas tengo que tener en consideracion para poder
tener 0 problemas con la concurrencia.

Los procesos son complejos pero revise y en todo considero lo anteriormente
mencionado

Muchas gracias


Jesus

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
07/01/2007 - 11:39 | Informe spam
No es tan sencillo, no es cuestión de activar una opción y los bloqueos
se solucionan. Hay que ver porqué se producen, y para ello la mejor forma es
registrar una traza (Profiler) y hacer una prueba. Una vez analizadas las
sentencias involucradas es cuando se evalúa una posible solución, pero hasta
entonces poco podemos hacer nosotros aquí...
Respuesta Responder a este mensaje
#2 Jose Mariano Alvarez
08/01/2007 - 00:55 | Informe spam
Es muy dificil darte una recomendacion que no sea general.

No se que significa "los rechaza".

Pero si se te producen deadlocks, sugeriria, como primera medida que
verifiques que haya indices eficientes, y ademas tratar de acceder a los
recursos siempre en el mismo orden para evitar esperas circulares

Otra buena recomendacion es hacer las transacciones lo mas pequeñas
posibles.

Otro detalle que te menciono porque alguna vez lo he visto y se producian
fenomenos como el que comentas, es que el begin transaction lo debes hacer
al momento de ejecutar el cambio (por ejemplo al apretar el boton Aceptar o
OK) y no cuando el usuario ingresa a la ventana mientras el usuario cambia
los datos en la aplicacion VB6.




Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"fac" wrote in message
news:
Buenas foro, queria saber que consideraciones debo tener para no tener
problemas por concurrencia de usuarios, me explico, el sistema esta hecho
en vb 6 con sql server 2000 y cuando uno realiza una transaccion en el
sistema, todo funciona bien, pero si ingresan varios, el sistema acepta a
1 o 2 y a los demas los rechaza, en las consultas uso el (nolock) y en los
update (rowlock), asi como en las vistas y en los inserts, pero hacen las
pruebas y sigue el problema, no se que mas tengo que tener en
consideracion para poder tener 0 problemas con la concurrencia.

Los procesos son complejos pero revise y en todo considero lo
anteriormente mencionado

Muchas gracias


Jesus

Respuesta Responder a este mensaje
#3 fac
08/01/2007 - 16:39 | Informe spam
Buenas, muchas gracias por los conocimientos y el apoyo, mas tarde estare
colocando el archivo del profiler a ver como me pueden ayudar o como puedo
analizarlo para ver el problema, pero tengo una consulta adicional, este
sistema que estoy viendo, ya esta desarrollado casi en su totalidad, pero
veo que las tablas no tienen indices con cluster, tienen los pk pero sin
cluster, que beneficio tiene esto porque tengo entendido que toda tabla debe
tener a menos 1 indice cluster, a menos que en caso especial no se coloque,
muchas gracias de antemano por las respuestas a esta consulta.
Respuesta Responder a este mensaje
#4 Jose Mariano Alvarez
08/01/2007 - 17:06 | Informe spam
Que no tenga indices clustered no te va a provocar esos problemas que has
comentado en tu anterior post.

En lineas generales es conveniente que tenga un indice clustered, pero no
siempre debe ser el de la PK. El beneficio del clustered es aprovechar para
acceder a los registros de forma ordenada o cuando se requiere un numero
importante de accesos. En general el compromiso es entre recorrer todas las
paginas (SCAN) de la tabla o de un indice, o accederlas puntualmente (SEEK)
para lo cual te puede ayudar el indice.





Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"fac" wrote in message
news:
Buenas, muchas gracias por los conocimientos y el apoyo, mas tarde estare
colocando el archivo del profiler a ver como me pueden ayudar o como puedo
analizarlo para ver el problema, pero tengo una consulta adicional, este
sistema que estoy viendo, ya esta desarrollado casi en su totalidad, pero
veo que las tablas no tienen indices con cluster, tienen los pk pero sin
cluster, que beneficio tiene esto porque tengo entendido que toda tabla
debe tener a menos 1 indice cluster, a menos que en caso especial no se
coloque, muchas gracias de antemano por las respuestas a esta consulta.

Respuesta Responder a este mensaje
#5 fac
08/01/2007 - 18:28 | Informe spam
Tengo esta sentencia
PRINT 'AQUI1'
DELETE FROM utb_valores_dinamica_contable with (FASTFIRSTROW)
WHERE VAR_COD_TRANSACCION = @in_var_trx
And VAR_COD_USUARIO = @in_usuario
PRINT 'AQUI2'

lo proble con (ROWLOCK) CON (UPDLOCK) pero no funciona, cuando ejecuto los
script en distintas maquinas, con distintos usuarios y la misma transaccion
sale lo siguiente

Servidor: mensaje 1205, nivel 13, estado 50, procedimiento
usp_mpc_prc_CargaInicial, línea 211
Transaction (Process ID 56) was deadlocked on lock resources with another
process and has been chosen as the deadlock victim. Rerun the transaction.

la linea 211 es justamente el delete, porque en el resultado sale aqui1 pero
no imprime aqui2, saben si puede ser por algun service pack que me este
faltando?.

Y como puedo saber si tengo todos los service pack del sqlserver2000

Muchas gracias.



"Jose Mariano Alvarez"
escribió en el
mensaje news:
Que no tenga indices clustered no te va a provocar esos problemas que has
comentado en tu anterior post.

En lineas generales es conveniente que tenga un indice clustered, pero no
siempre debe ser el de la PK. El beneficio del clustered es aprovechar
para acceder a los registros de forma ordenada o cuando se requiere un
numero importante de accesos. En general el compromiso es entre recorrer
todas las paginas (SCAN) de la tabla o de un indice, o accederlas
puntualmente (SEEK) para lo cual te puede ayudar el indice.





Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"fac" wrote in message
news:
Buenas, muchas gracias por los conocimientos y el apoyo, mas tarde estare
colocando el archivo del profiler a ver como me pueden ayudar o como
puedo analizarlo para ver el problema, pero tengo una consulta adicional,
este sistema que estoy viendo, ya esta desarrollado casi en su totalidad,
pero veo que las tablas no tienen indices con cluster, tienen los pk pero
sin cluster, que beneficio tiene esto porque tengo entendido que toda
tabla debe tener a menos 1 indice cluster, a menos que en caso especial
no se coloque, muchas gracias de antemano por las respuestas a esta
consulta.





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida