none
Reconstruccion de indices, ¿perjudicial hacerlo a diario? RRS feed

  • Pregunta

  • ¿Podría ser perjudicial realizar reconstrucciones de indices de una base de datos SQL Server 2008 a diario?

    Me estoy adentrando en el mundo de SQL Server y puede parecer a lo mejor una pregunta un tanto nímia, pero con tiempo, ayuda, estudio de libros y experiencia seguro que lo remediamos.

    Os cometno, tenemos una aplicación que corre sobre una BBDD de Sql Server 2008 y desde una delegación nos reportan una lentitud manifiesta al guardar registros. El caso es que tras una reconstrucción de indices periodica semanal todos los Domingos, tal lentitud mejora "notablemente" hasta el medio día del Lunes. La lentitud se va haciendo más manifiesta a lo largo de la semana.

    No se si sería una practica sensata aplicar tal reconstruccion a diario.

    ¿Alguna idea, sugerencia o pauta a seguir?

    Muchas gracias.

    martes, 20 de septiembre de 2011 23:40

Respuestas

  • Hola. En mi conocimiento de SQL Server 2008 y esperando que puedan decir otros foristas, reconstruir índices a diario puede representar un diseño equivocado para la situación de negocios. Sin embargo, es necesario conocer un poco más sobre la estructura de la tabla a la cual se le reconstruye el índice y además, las tablas relacionadas con ésta para entender mejor el esquema o el modelo. Adicionalmente, la lentitud se manifiesta al guardar registros, pero sería bueno entender si al consultarlos también hay lentitud. Y hablando de lentitud, ¿que se ha establecido como tiempo de respuesta soportable para inserciones o consultas?

    El mismo SQL Server 2008 tiene herramientas para capturar trazas (SQL Profiler) e incluso usar éstas para alimentar un asistente de afinación de desempeño (Database Tuning Advisor), el cual hace algunas recomendaciones sobre índices particularmente. De pronto el usar estas dos herramientas pueda ayudar a aclarar un poco el escenario. Si te parece, comparte algunos resultados de la traza de SQL Profiler, capturada con la plantilla "desempeño", así como lo solicitado en el párrafo anterior.

    Gracias y saludos,

     

     


    Guillermo Taylor F.

    IT Pro & Xbox gamer

    My blog

    miércoles, 21 de septiembre de 2011 1:02
  • Hola.

    Lo ideal es reindexar o defragmentar cuando ello sea necesario, y esto es cuando esté degradado el índice, teniendo en cuenta cada índice por separado, y eso puede ser una vez al año o una vez cada hora.

    Te recomiendo pasar por http://ola.hallengren.com/, donde encontrarás métodos para hacer esto mismo, lo lanzas a diario y se reindexan los índices que lo requieran. Luego puede que detectes índices que se degraden mucho más y requieran de mecanismos adicionales.

    En cuanto a la pérdida de rendimiento que observas, habría que ver qué es lo que la causa para tratar de remediarlo. Puede que se trate de un par de consultas concretas o una degradación general, de un índice que se degrada, de unas estadísticas desactualizadas, pueden ser bloqueos o también otra serie de problemas de otro tipo (memoria, CPU, etc.). ¿Monitorizas las esperas (http://qwalgrande.blogspot.es/1292243943/monitorizar-esperas/)? ¿Qué te dicen esas esperas? Si tienes varias delegaciones, puedes comparar datos de rendimiento entre ellas para detectar la diferencia de comportamiento.

     


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    domingo, 25 de septiembre de 2011 18:55
    Moderador

Todas las respuestas

  • Hola. En mi conocimiento de SQL Server 2008 y esperando que puedan decir otros foristas, reconstruir índices a diario puede representar un diseño equivocado para la situación de negocios. Sin embargo, es necesario conocer un poco más sobre la estructura de la tabla a la cual se le reconstruye el índice y además, las tablas relacionadas con ésta para entender mejor el esquema o el modelo. Adicionalmente, la lentitud se manifiesta al guardar registros, pero sería bueno entender si al consultarlos también hay lentitud. Y hablando de lentitud, ¿que se ha establecido como tiempo de respuesta soportable para inserciones o consultas?

    El mismo SQL Server 2008 tiene herramientas para capturar trazas (SQL Profiler) e incluso usar éstas para alimentar un asistente de afinación de desempeño (Database Tuning Advisor), el cual hace algunas recomendaciones sobre índices particularmente. De pronto el usar estas dos herramientas pueda ayudar a aclarar un poco el escenario. Si te parece, comparte algunos resultados de la traza de SQL Profiler, capturada con la plantilla "desempeño", así como lo solicitado en el párrafo anterior.

    Gracias y saludos,

     

     


    Guillermo Taylor F.

    IT Pro & Xbox gamer

    My blog

    miércoles, 21 de septiembre de 2011 1:02
  • Hola.

    Lo ideal es reindexar o defragmentar cuando ello sea necesario, y esto es cuando esté degradado el índice, teniendo en cuenta cada índice por separado, y eso puede ser una vez al año o una vez cada hora.

    Te recomiendo pasar por http://ola.hallengren.com/, donde encontrarás métodos para hacer esto mismo, lo lanzas a diario y se reindexan los índices que lo requieran. Luego puede que detectes índices que se degraden mucho más y requieran de mecanismos adicionales.

    En cuanto a la pérdida de rendimiento que observas, habría que ver qué es lo que la causa para tratar de remediarlo. Puede que se trate de un par de consultas concretas o una degradación general, de un índice que se degrada, de unas estadísticas desactualizadas, pueden ser bloqueos o también otra serie de problemas de otro tipo (memoria, CPU, etc.). ¿Monitorizas las esperas (http://qwalgrande.blogspot.es/1292243943/monitorizar-esperas/)? ¿Qué te dicen esas esperas? Si tienes varias delegaciones, puedes comparar datos de rendimiento entre ellas para detectar la diferencia de comportamiento.

     


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    domingo, 25 de septiembre de 2011 18:55
    Moderador
  • Hola.

    ¿Resolvimos tus dudas?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    viernes, 30 de septiembre de 2011 16:51
    Moderador