SQL Server Performance

Problema con una consulta

Discussion in 'Preguntas sobre SQL Server en Español.' started by Asura, Oct 6, 2004.

  1. Asura New Member

    Tengo un problema, hace poco adquirimos un servidor de mayor capacidad que el que veniamos usando tiempo atrás, así que transferí todas mis bases de datos a ese servidor. El nuevo servidor es de mucha mayor capacidad que el anterior y funciona bastante más rápido que el anterior, excepto en una consulta en particular, al ejecutar dicha consulta tarda más de 3 minutos en responder, pero si hago esa misma consulta sobre la base en el servidor anterior responde en 3 segundos.... Cabe mencionar que la base es exactamente la misma. Tal vez hace falta configuar algo que no haya hecho y no me he dado cuenta.

    ¿Alguien podría ayudarme a averiguar a que se debe este problema?
  2. Luis Martin Moderator

    Al haber transferido las bases de un servidor a otro, mediante restore o attach, es necesario actualizar las estadísticas en el nuevo servidor, ya que las mismas no son transferidas en el acto de restore o attach.<br /><br />Para ello puedes usar:<br /><br />UPDATE STATISTICS table | view <br /> [ <br /> index <br /> | ( statistics_name [ ,...n ] ) <br /> ] <br /> [ WITH <br /> [ <br /> [ FULLSCAN ] <br /> | SAMPLE number { PERCENT | ROWS } ] <br /> | RESAMPLE <br /> ] <br /> [ [ , ] [ ALL | COLUMNS | INDEX ] <br /> [ [ , ] NORECOMPUTE ] <br /> ] <br /><br />Ejemplo: UPDATE STATISTICS 'Nombre de la tabla', una instrucción por cada tabla, o<br /><br /><br />sp_updatestats [[@resample =] 'resample']<br /><br />Return Code Values<br />0 (success) or 1 (failure)<br /><br />Arguments<br />[@resample=] 'resample'<br /><br />Specifies that sp_updatestats will use the RESAMPLE option of the UPDATE STATISTICS command. New statistics will inherit the sampling ratio from the old statistics. If 'resample' is not specified, sp_updatestats updates statistics using the default sampling. This parameter is varchar(<img src='/community/emoticons/emotion-11.gif' alt='8)' /> with a default value of 'NO'.<br /><br />Ejemplo:<br />USE Nombre_de_la_base_de_datos<br />EXEC sp_updatestats<br /><br />Luis Martin<br />Moderator<br />SQL-Server-Performance.com<br /><br /><font size="1">All postings are provided “AS IS” with no warranties for accuracy.</font id="size1"><br /><br />
  3. Asura New Member

    Gracias Luis Martin por contestar mi post.

    Hice lo que me aconsejaste, pero las cosas siguen igual. ¿Alguna otra solución?

    De antemano gracias.
  4. Luis Martin Moderator

    Verifica que la base tiene la opción auto create statistics prendida.
    Fíjate, utilizando el Analizador de Consultas (Query Analyzer) los planes de ejecución de la consulta en ambos servidores.
    De esta forma podrás comprobar si el plan es el mismo o es diferente.
    De ser diferentes fíjate si en el servidor viejo se está utilizando algún índice que en el nuevo no lo utilize. De ser así, ejecuta DBCC DBREINDEX para la/s tabla/s en cuestión.
    No te he preguntado antes, pero supongo que ambos servidores tienen la misma versión de SQL y de Service Pack.


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All postings are provided “AS IS” with no warranties for accuracy.

  5. Luis Martin Moderator

    Otra cosa: Si el primer servidor tiene un solo procesador y el segundo màs de uno, podrìa probar dejando en el segundo un solo procesador para procesamiento en paralelo de consultas (server, propiedades, procesador)
    La mayorìa de la veces el procesamiento en paralelo de consultas, resulta màs lento.



    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All postings are provided “AS IS” with no warranties for accuracy.

  6. Asura New Member

    Muchisísimas gracias Luis Martin, ya resolví el problema, la causa del problema era el procesamiento en paralelo, seguí tu consejo y todo se solucionó.

    De nuevo muchas gracias y disculpa las molestias.
  7. Luis Martin Moderator

    Bienvenida/o al Forum.

    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All postings are provided “AS IS” with no warranties for accuracy.

  8. c_maldon Member

    ¿Que te hubiese parecido aumentar el parametro
    "cost threshold for parallelism" a 30 por ejemplo
    en lugar de desactivar el segundo procesador?

    Gracias

    Otra cosa: Si el primer servidor tiene un solo procesador y el segundo màs de uno, podrìa probar dejando en el segundo un solo procesador para procesamiento en paralelo de consultas (server, propiedades, procesador)
    La mayorìa de la veces el procesamiento en paralelo de consultas, resulta màs lento.



    Luis Martin
    Moderator
    SQL-Server-Performance.com

  9. Luis Martin Moderator

    Puede resultar, depende de cada instalación y cada aplicación.


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All postings are provided “AS IS” with no warranties for accuracy.

  10. c_maldon Member

    Asura,

    Me quedó una duda, ¿Conseguiste una importande diferencia de performance
    anulando uno de los procesadores?

    Gracias

Share This Page