Bloqueos en SQL Server 7.0

12/08/2003 - 21:14 por EDY | Informe spam
Qué tal !!

Tengo un problema con mi aplicación ASP, COM+ y SQL
Server, es una aplicación Punto de Venta y su medio de
comunicación es Internet, las sucursales accesan al
servidor por medio de la línea telefónica.

Lo que pasa es que tengo una tabla "Inventarios" y en ella
como se imaginan contiene información acerca de las
existencia de los productos y por lo tanto cada vez que se
realiza una venta o algún proceso que afecte el
inventario, esta tabla es afectada. Resulta ser que cuando
se realizan Ajustes al inventario a diferentes sucursales
el sistema se vuelve notoriamente más lento al momento de
generar ventas, he estado revisando mi código(DLL de VB y
COM+) y veo que por cada producto que se le va a modificar
su existencia abre una conexión a la BD, modifica la
existencia del producto y actualiza el registro de otra
tabla que guarda el producto, la fecha de ajuste, la
cantidad ajustada y la cantidad anterior.

Todo eso por cada partida.

Comunmente se realizan ajustes(inventarios) al rededor de
300 productos y se van realizando en bloques de 50pzas.

Mi problema es el rendimiento en mi server y por supuesto
mi conexión(que es la línea telefónica), sin embargo en
nuestro corporativo se tiene un enlace dedicado a 128,
además de que como nuestra aplicación es en tres capas, el
procesamiento de los datos se realiza en nuestro server.

Cuando realizamos consultas a las existencia mientras se
realizan inventarios, notamos que el sistema se vuelve
lento. Ahora bien, estoy suponiendo que como la
tabla "Inventarios" es una tabla en constante operación,
sufre de muchos bloqueos por parte del server y eso hace
que el rendimiento se deteriore.


Ustedes cómo ven, según yo, es el bloqueo que sufre la
Tabla "Inventarios" por tanta concurrencia, es cierto que
mis conexiones son lentas, pero el procesamiento lo
realiza el server no mi aplicación cliente.

Espero me puedan dar su comentario.

SALUDOS !!!

EDY
 

Leer las respuestas

#1 Javier Loria\(MVP\)
12/08/2003 - 22:18 | Informe spam
Hola Edy:
Dependiendo de como este escrito el codigo puede ser el problema:
a) Si el codigo esta corriendo en el IIS el unico que se conecta es el
servidor IIS ya sea con su cuenta de usuario de Windows o de SQL no deberia
dar ningun problema. La razon es que el OLE-DB y ODBC te ofrece "conexion
pooling" de manera que si usas la misma setencia de conexion (Tiene que ser
EXACTAMENTE igual). Si el IIS esta usando la cuenta de usuario entonces si
podria significar un problema.
b) Si lo anterior no es problema es muy posible que tengas una situacion
de bloqueos. Si estas usando ASP y COM que como tienes configurado el
bloqueo? (optimista o pesimista) y donde usas el cursor? (cliente o
servidor)
Una posiblidad es mover el codigo de actualizacion unicamente a un
Procedimiento para reducir al minimo el bloqueo.

Saludos,



Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

EDY escribio:
Qué tal !!

Tengo un problema con mi aplicación ASP, COM+ y SQL
Server, es una aplicación Punto de Venta y su medio de
comunicación es Internet, las sucursales accesan al
servidor por medio de la línea telefónica.

Lo que pasa es que tengo una tabla "Inventarios" y en ella
como se imaginan contiene información acerca de las
existencia de los productos y por lo tanto cada vez que se
realiza una venta o algún proceso que afecte el
inventario, esta tabla es afectada. Resulta ser que cuando
se realizan Ajustes al inventario a diferentes sucursales
el sistema se vuelve notoriamente más lento al momento de
generar ventas, he estado revisando mi código(DLL de VB y
COM+) y veo que por cada producto que se le va a modificar
su existencia abre una conexión a la BD, modifica la
existencia del producto y actualiza el registro de otra
tabla que guarda el producto, la fecha de ajuste, la
cantidad ajustada y la cantidad anterior.

Todo eso por cada partida.

Comunmente se realizan ajustes(inventarios) al rededor de
300 productos y se van realizando en bloques de 50pzas.

Mi problema es el rendimiento en mi server y por supuesto
mi conexión(que es la línea telefónica), sin embargo en
nuestro corporativo se tiene un enlace dedicado a 128,
además de que como nuestra aplicación es en tres capas, el
procesamiento de los datos se realiza en nuestro server.

Cuando realizamos consultas a las existencia mientras se
realizan inventarios, notamos que el sistema se vuelve
lento. Ahora bien, estoy suponiendo que como la
tabla "Inventarios" es una tabla en constante operación,
sufre de muchos bloqueos por parte del server y eso hace
que el rendimiento se deteriore.


Ustedes cómo ven, según yo, es el bloqueo que sufre la
Tabla "Inventarios" por tanta concurrencia, es cierto que
mis conexiones son lentas, pero el procesamiento lo
realiza el server no mi aplicación cliente.

Espero me puedan dar su comentario.

SALUDOS !!!

EDY

Preguntas similares