Consulta por lentitud en los inserts

04/01/2008 - 20:18 por marcelo | Informe spam
Hola,

Mi consulta es la siguiente: tengo desarrollada una aplicación en VB6 que
lee archivos de registros variables secuencialmente y carga la información
en una base de datos SQLServer 2005.

La cuestión es que antes la aplicación corría en una pc vieja, con SQLServer
2000, y "andaba lento" el proceso.
Ahora se migró a un servidor mucho mas potente y con SQLServer 2005 y sigue
andando a la misma velocidad.

No logro acelerar la velocidad de la aplicación, y estoy chequeando qué
puedo llegar a optimizar del lado de la base de datos, todos los insert se
hacen por medio de stored procedures.

Basicamente los pasos para cada insert son los siguientes, la aplicación
actualiza dos tablas por cada registro a insertar:
Calcula el maximo ID para la tabla 1
Calcula el maximo ID para la tabla 2
ejecuta insert de la tabla 1
ejecuta insert de la tabla 2

La base se depura cada X dias por lo que la cantidad de registros no crece
en volumen...la tabla mas grande puede llegar a tener 500.000 registros.

Actualmente cada tabla tiene unos 3 o 4 indices para las consultas...
Tambien quisiera saber que tengo que tener en cuenta para saber si los
indices estan bien creados...

Cualquier consejo sobre como detectar los cuellos de botellas seran
bienvenidos

desde ya, muchas gracias.
 

Leer las respuestas

#1 Carlos A.
05/01/2008 - 16:23 | Informe spam
Marcelo:
Por que no realiza una traza (profiler) y ejecuta las sentencias una a una.
de esta forma podra determinar cual de las consultas se esta demorando.
Una vez tenga claras las sentencias demoradas, apóyese con el index tunning
wizard. este utilitario le dará una visión un poco mas amplia de lo que puede
mejorar.
Otra cosa es que revise las indices de las tablas (especialmente los indices
cluster), si es posible cambielos a nocluster.

Tambien revise a través de DBCC SHOWCONTIG la fragmentación de los indices
enlos BOL encontrará más detalles de este DBCC.

Si la fragmentación está muy alta entonces por favor ejecute DBCC DBREINDEX
de las tablas. y por último UPDATE STATISTICS WITH FULLSCAN

Una vez haya ejecutado estos pasos verá que el rendimiento mejorará
notablemente.

Por último, programe DBCC DBREINDEX y UPDATE STATISTICS con cierta
regularidad.

saludos,

"marcelo" wrote:

Hola,

Mi consulta es la siguiente: tengo desarrollada una aplicación en VB6 que
lee archivos de registros variables secuencialmente y carga la información
en una base de datos SQLServer 2005.

La cuestión es que antes la aplicación corría en una pc vieja, con SQLServer
2000, y "andaba lento" el proceso.
Ahora se migró a un servidor mucho mas potente y con SQLServer 2005 y sigue
andando a la misma velocidad.

No logro acelerar la velocidad de la aplicación, y estoy chequeando qué
puedo llegar a optimizar del lado de la base de datos, todos los insert se
hacen por medio de stored procedures.

Basicamente los pasos para cada insert son los siguientes, la aplicación
actualiza dos tablas por cada registro a insertar:
Calcula el maximo ID para la tabla 1
Calcula el maximo ID para la tabla 2
ejecuta insert de la tabla 1
ejecuta insert de la tabla 2

La base se depura cada X dias por lo que la cantidad de registros no crece
en volumen...la tabla mas grande puede llegar a tener 500.000 registros.

Actualmente cada tabla tiene unos 3 o 4 indices para las consultas...
Tambien quisiera saber que tengo que tener en cuenta para saber si los
indices estan bien creados...

Cualquier consejo sobre como detectar los cuellos de botellas seran
bienvenidos

desde ya, muchas gracias.



Preguntas similares