2011-03-09 13 views
8

estoy haciendo un poco de ajuste SQL estos días y encontrar uno sql raro durante la prueba:¿Cómo evitar las "estadísticas de reconstrucción" de SQL Server cuando se realizan pruebas de rendimiento?

SELECT StatMan([SC0],[SC1], [SB0000]) 
FROM (SELECT TOP 100 PERCENT [SC0],[SC1], step_direction([SC0]) over (order by NULL) AS [SB0000] 
     FROM (SELECT [tableA] AS [SC0],[tableB] AS [SC1] 
      FROM [dbo].[url] WITH (READUNCOMMITTED,SAMPLE 3.408654e+000 PERCENT) 
      ) AS _MS_UPDSTATS_TBL_HELPER 
    ORDER BY [SC0],[SC1], [SB0000] 
    ) AS _MS_UPDSTATS_TBL 
OPTION (MAXDOP 1) 

Parece que esto está haciendo un poco de "REINDEX" o "reconstrucción" algún índice db de acuerdo a SQL Server. Pero mi pregunta es cómo podemos evitar esto durante la prueba de carga larga además de "reindexar" para cada tabla antes de la prueba.

Y este SQL consumirá 16862ms debido a que mi tabla contiene suficientes filas. Y hay muchos insertar acción en mi prueba.

+1

Eso me parece una consulta automática de estadísticas de actualización. Puede desactivarlo para toda la base de datos o para índices individuales, pero sus otras consultas pueden sufrir. –

Respuesta

6

Esto parece ser debido a la actualización de las estadísticas.

¿Se realizarán las estadísticas de actualización en un entorno de producción normal? Si es así, ¿no debería una prueba de carga, para reflejar un entorno de producción, actualizar las estadísticas también?

Para desactivar la opción AUTO_UPDATE_STATISTICS, use sp_autostats en las tablas deseadas (consulte http://msdn.microsoft.com/en-us/library/ms188775.aspx).

+0

¡Gracias por la respuesta! Me estoy ejecutando en el entorno de rendimiento. Esto realmente útil! – Vance

+1

Gracias. Recuerde que, si apaga AUTO_UPDATE_STATISTICS, es posible que desee ejecutar una ACTUALIZACIÓN ESTADÍSTICA manual durante las horas de menor actividad. – Enull

+0

Si mi prueba sql es solo para "consulta", ¿tengo que ACTUALIZAR ESTADÍSTICAS antes/después de la prueba? – Vance

0

Antes de cambiar algo, lo dejaría funcionar como está, con el Analizador de SQL y luego conseguiría que Tuning Advisor analice los resultados. Puede encontrar algunas ineficiencias en el diseño de la mesa. También algunas cosas bastante inocentes pueden afectarlo: p. tener "demasiados índices" o usar GUID como PK en una tabla que tiene más insertos que los seleccionados ...

Si se resuelven todas las ineficiencias y todavía tiene rendimiento, entonces sí, puede desactivar las estadísticas automáticas y obtener estadísticas actualizadas en la hora pico. Pero entonces debes hacer lo mismo en la producción, como ya dijiste la persona.

Cuestiones relacionadas