2009-09-12 10 views
10

Estoy trabajando con un cliente que acaba de actualizar de SQL 2000 a SQL 2008 y sus tiempos de consulta han aumentado mucho.Servidor SQL ARITHABORT

Eché un vistazo a las vistas y no pude ver mucho mal con ellas. Cuando ejecuté la vista directamente en el servidor, los tiempos estaban bien. Cuando ejecuté Management Studio de forma remota, el tiempo pasa de 2 segundos a aproximadamente 30 segundos.

Por lo tanto, probé un experimento en la copia de prueba al establecer ARITHABORT en ON (basado en algunos artículos), y los tiempos también se reducen de forma remota.

Por lo tanto, establecer ARITHABORT parece ser la respuesta, pero antes de aplicar a la base de datos en vivo, me gustaría entender por qué. Entiendo que tiene que ver con el nivel de gravedad de una división cero, pero ¿por qué debería ayudar con ver los tiempos de consulta?

+1

Quizás esta es una pregunta estúpida, pero ¿obtiene los mismos resultados si configura ARITHABORT en ON? – LJM

Respuesta

6

Tim,

creo que en SQL Server 2000, si hubiera establecido ARITHABORT OFF, el optimizador de consultas no consideraría indexados índices de las vistas en el desarrollo de un plan de ejecución de la consulta. Entonces, si el mejor plan utiliza un índice de vista, sería importante. No sé si este es todavía el caso, pero cuando mira los planes de consulta, puede ver específicamente si el plan más rápido menciona un índice de vista.

No sé el motivo específico que ARITHABORT tiene que ver con las vistas indizadas, pero las opciones de SET afectan a varias cosas, y la situación con ARITHABORT apenas ha sido estable. Puede consultar this link.

Tampoco es imposible que parte de este comportamiento se vea afectado por el nivel de compatibilidad. Si alguna de las bases de datos actualizadas se estableció en el nivel 80 o 90, es posible que vea si realmente se necesitaba.

+5

Además, a pesar del nivel de compatibilidad, parece que el.La conexión de NET SQL Client establece ARITHABORT en OFF por defecto, mientras SQL Server Management Studio lo establece en ON, y experimentamos un bajo rendimiento antes de ACTUALIZAR al igual que Tim. – Paul

2

Tiendo a pensar que la configuración de ARITHABORT es una pista falsa. ¿Sus planes de consulta difieren entre la prueba y los sistemas de producción? ¿Sus tablas son IDÉNTICAS en los datos que contienen, y sus estadísticas están actualizadas en ambos servidores, con los mismos índices? Yo comprobaría eso primero.

+0

Definitivamente hizo la diferencia en la prueba. –

0

[Esto no es una gran respuesta.] También me acabo de topar con esto, pero aún más extraño es que ahora no puedo reproducir el rendimiento anteriormente pobre. Incluso después de volver a poner esa opción en OFF, el SQL relevante ahora se está ejecutando tan rápido como antes. [Sospecho almacenamiento en caché ha obviado ahora las diferencias que confiere ajuste.]

0

Siempre debe girar arithabort durante su sesión de inicio de sesión por razones de rendimiento. Acabo de experimentar este problema con múltiples procesos en una base de datos de 2008 R2 y encontré que Microsoft actualizó la documentación del servidor SQL para el estado de 2012 como tal.

http://msdn.microsoft.com/en-us/library/ms190306.aspx

0

Cuando ARITHABORT es OFF, índices en (persistieron) columnas calculadas are not used. En general, Microsoft recomienda a always turn itON. La única razón por la que es OFF de forma predeterminada (en algunos casos) es la compatibilidad con versiones anteriores.