Mejora rendimiento utilizando vistas frente sql dinamico

17/03/2006 - 00:46 por Silverius | Informe spam
Hola a todos,

Tenemos una bbdd con tablas mensuales de unos 3 millones de registros (no me
digais por favor el error de trabajar asi,que ya esta tenido en cuenta,pero
la aplicacion esta asi ahora mismo y es complejo cambiarla).Estas tablas se
consultan mucho por una aplicacion en la que usamos sql dinamico para que
segun el rango de fechas atacar una tabla u otra, y se consultan por muchas
consultas distintas con parametros distintos.

La mayoria de las consultas son relativas a los 10 dias, y un porcentaje
menor de consultas llega a 30 dias.Otro 10 % de las consultas lo hacen
contra tablas anteriores.Cuando el rango de fechas comprende 2 tablas (no se
pueden consultar mas de 2) hacemos un union en la consulta dinamica.Como
estamos modificando la aplicacion poco a poco, lo primero que he pensado es
en crear una vista sobre digamos los dos ultimos meses, y solo en caso de
que la consulta sea contra fechas anteriores seguir usando el sqldinamico de
antes,sino hacerlo contra la vista.La pregunta es:

-Creeis que es una buena opcion para mejorar el rendimiento de forma
notable?
-En las tablas se agregan filas con una cadencia aproximada de 3 por
segundo en momentos punta, esto afectara a la vista?

Todas las opiniones o consejos son agradecidos,aunque como digo que no
impliquen cambiar totalmente la arquitectura de golpe por favor

Gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Ele
17/03/2006 - 01:15 | Informe spam
Hola no puedo ayudarte mucho, :( comparar una vista con sql dinamico tendria
que hacer una prueba. Para mejorar el rendimiento no hay otro camino que
crear indices con los campos criticos, evitar sql dinamicos reemplazado con
querys para cada caso, usar el formato standard para las fechas 'yyyymmdd' y
hacer pruebas con la ayuda de execution plan
suerte
"Silverius" escribió en el mensaje
news:
Mostrar la cita
me
Mostrar la cita
cuenta,pero
Mostrar la cita
se
Mostrar la cita
muchas
Mostrar la cita
se
Mostrar la cita
es
Mostrar la cita
de
Mostrar la cita
#2 Silverius
17/03/2006 - 01:19 | Informe spam
Si Ele,pero a eso me refiero.A que si en vez "evitar sql dinamicos
reemplazado con
querys para cada caso" uso una vista no voy a notr perdida de rendimiento
frente al caso que dices.Y que si a la vez deberia notar significativamente
mejoria frente al sql dinamico.



"Ele" escribió en el mensaje
news:
Mostrar la cita
tendria
Mostrar la cita
con
Mostrar la cita
y
Mostrar la cita
(no
Mostrar la cita
que
Mostrar la cita
(no
Mostrar la cita
de
Mostrar la cita
sqldinamico
Mostrar la cita
#3 Alejandro Mesa
17/03/2006 - 01:29 | Informe spam
Silverius,

Te recomiendo leas en los BOL sobre las vistas particionadas. Pudieras crear
una tabla para cada mes, poniendo una restriccion en cada tabla y usando esta
columna como clave primaria (al menos primera columna de esta pk) y armando
una vista que sea el "union all" de las tablas. Luego haces la select sobre
la vista usando la columna usada para particionar.

Using Partitions in a Microsoft SQL Server 2000 Data Warehous
http://msdn.microsoft.com/library/d...nsindw.asp


AMB

"Silverius" wrote:

Mostrar la cita
#4 Guillermo Roldan
17/03/2006 - 09:22 | Informe spam
Hola Silverius,

Habitualmente, la mejora de rendimiento se suele conseguir principalmente
con una indexación apropiada, partiendo que actualices estadísticas
habitualmente, o bien, re-construyas índices habitualmente (ya sea
manualmente o por Plan de Mantenimiento) que a fin de cuentas, también
actualiza estadísticas.

Otra razón de pérdida de rendimiento, podrían ser los bloqueos.

Puedes ayudarte de trazas, para identificar qué consultas se demoran,
bloqueos, etc.

De cualquier modo, si no consigues mejorar el rendimiento porque se lanzan
consultas que actúan sobre grandes conjuntos de registros para hallar medias,
totales, y estadísticas en general, estarás ante un escenario ideal para
implementar Analysis Services.

Saludos,
Guillermo Roldán
"Silverius" escribió:

Mostrar la cita
#5 Silverius
17/03/2006 - 17:22 | Informe spam
Gracias Guillermo, pero la verdad me he quedado un poco igual que estaba con
tu respuesta.Se cuales son los motivos de perdida de rendimiento,pero en
este caso no es tanto la teoria sino como la practica e intentar hacer los
menores cambios posibles para conseguir el mayor rendimiento.
Logicamente se que para averiguar las posibles mejoras hay que medir y
tracear,pero eso ya esta hecho.Ahora pregunto si esta medida en concreto es
apropiada,u otras ideas que me podais dar para esto como me comenta
Alejandro en la respuesta anterior.

Gracias de todas formas y un saludo.



"Guillermo Roldan" escribió en
el mensaje news:
Mostrar la cita
medias,
Mostrar la cita
(no me
Mostrar la cita
cuenta,pero
Mostrar la cita
se
Mostrar la cita
que
Mostrar la cita
muchas
Mostrar la cita
(no se
Mostrar la cita
es
Mostrar la cita
de
Mostrar la cita
sqldinamico de
Mostrar la cita
Ads by Google
Search Busqueda sugerida