2008-08-10 9 views
10

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 compatibilidad nivel 80. Sin embargo, el rendimiento de la base de datos parece más lento en SQL 2005 que en SQL 2000 en algunos casos (no hemos confirmado esto utilizando benchmarks todavía). ¿Mejoraría el nivel de compatibilidad a 90 para mejorar el rendimiento en los servidores SQL 2005?¿La ejecución de una base de datos de SQL Server 2005 en el nivel de compatibilidad 80 tiene un impacto negativo en el rendimiento?

Respuesta

4

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

Pero me encontré con dos escenarios, en los que el rendimiento puede caer dramáticamente cuando se utiliza mssql 2005 en comparación con mssql 2000:

  1. descubrimiento de parámetros: Cuando se utiliza un procedimiento almacenado, SQL Server calculará exactamente un plan de ejecución en a la hora, primero llama al procedimiento. El plan de ejecución depende de los valores de los parámetros dados para esa llamada. En nuestro caso, los procedimientos que normalmente duraban unos 10 segundos se ejecutan durante horas bajo mssql 2005. Eche un vistazo a here y here.

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

2

después de mover los DBs a 2005 hizo que

actualización de las estadísticas con barrido completo? reconstruyó los índices?

en primer lugar tratar de que a continuación, comprobar el rendimiento de nuevo

1

También un FYI, si ejecuta nivel de compatibilidad 90 a continuación, algunas cosas no se admiten más como el viejo exterior estilo se une (*= and =*)

1

¿Está utilizando subselects en tus consultas?

Desde mi experiencia, una instrucción SELECT con subselects que funciona bien en SQL Server 2000 puede rastrear en SQL Server 2005 (¡puede ser 10 veces más lenta!).

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

Cuestiones relacionadas