¿La ejecución de una base de datos SQL Server 2005 en el nivel de compatibilidad 80 tiene un impacto negativo en el rendimiento?

StackOverflow https://stackoverflow.com/questions/7237

  •  08-06-2019
  •  | 
  •  

Pregunta

Nuestro software debe poder ejecutarse en SQL Server 2000 y 2005.Para simplificar el desarrollo, estamos ejecutando nuestras bases de datos SQL Server 2005 en el nivel de compatibilidad 80.Sin embargo, el rendimiento de la base de datos parece más lento en SQL 2005 que en SQL 2000 en algunos casos (aún no lo hemos confirmado mediante pruebas comparativas).¿Actualizar el nivel de compatibilidad a 90 mejoraría el rendimiento en los servidores SQL 2005?

¿Fue útil?

Solución

Creo que leí en alguna parte que el motor de base de datos SQL Server 2005 debería ser aproximadamente un 30% más rápido que el motor SQL Server 2000.Es posible que tenga que ejecutar su base de datos en modo de compatibilidad 90 para obtener estos beneficios.

Pero me topé con dos escenarios, donde el rendimiento puede caer dramáticamente cuando uso mssql 2005 en comparación con mssql 2000:

  1. Rastreo de parámetros:Cuando se utiliza un procedimiento almacenado, el servidor SQL calculará exactamente un plan de ejecución a la vez; primero llame al procedimiento.El plan de ejecución depende de los valores de los parámetros proporcionados para esa llamada.En nuestro caso, los procedimientos que normalmente tardan unos 10 segundos se ejecutan durante horas en mssql 2005.Echar un vistazo aquí y aquí.

  2. Cuando se utilizan consultas distribuidas, mssql 2005 se comporta de manera diferente con respecto a las suposiciones sobre el orden de clasificación en el servidor remoto.El comportamiento predeterminado es que el servidor copia todas las tablas remotas involucradas en una consulta al tempdb local y luego ejecuta las combinaciones localmente.La solución alternativa es utilizar OPENQUERY, donde puede controlar exactamente qué conjunto de resultados se transfiere desde el servidor remoto.

Otros consejos

Después de trasladar las bases de datos a 2005, ¿lo hiciste?

¿Actualizar las estadísticas con escaneo completo?reconstruido los índices?

primero intente eso y luego verifique el rendimiento nuevamente

También para su información, si ejecuta el nivel de compatibilidad 90, algunas cosas ya no son compatibles, como las uniones externas de estilo antiguo. (*= and =*)

Estas usando subselecciones en tus consultas?

Según mi experiencia, una instrucción SELECT con subselecciones que funciona bien en SQL Server 2000 puede rastrearse en SQL Server 2005 (¡puede ser 10 veces más lento!).

Haga un experimento: vuelva a escribir una consulta para eliminar las subselecciones y vea cómo cambia su rendimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top