2009-08-25 20 views
9

¿Qué provocaría que se suspendiera una consulta realizada en Management Studio?Estado suspendido en el Monitor de actividad SQL

  1. Realizo un simple seleccionar top 60000 de una tabla (que tiene 11 millones de filas) y los resultados vuelven en uno o dos segundos.
  2. Cambio la consulta a la parte superior 70000 y los resultados toman hasta 40 min.

Al hacer un poco de búsqueda en otro tema relacionado pero me encontré con alguien que usaba DBCC FREEPROCCACHE para solucionarlo.

  1. Ejecuto DBCC FREEPROCCACHE y luego vuelvo a hacer la consulta para 70000 y parece que funciona.

Sin embargo, el problema persiste con una consulta diferente.

  1. Aumento para decir 90000 o si trato de abrir la tabla usando [Derecha-> Abrir tabla], tira alrededor de 8000 registros y se detiene.

Comprobando el registro de actividades para cuando hago la tabla abierta muestra que la sesión se ha suspendido con un tipo de espera de "Async_Network_IO". Para la sesión que ejecuta la selección de 90000, el estado es "Dormir", este es el mismo estado para la consulta de 70000 que se mencionó anteriormente que sí regresó pero en 45 minutos. Es extraño para mí que el estado muestre "Dormir" y que no parezca estar cambiando a "Runable" (tengo el monitor de actividad actualizado cada 30 segundos).

Notas adicionales:

  • yo no postulo tanto la tabla abierta y selecciono 90000, al mismo tiempo. Todas las consultas se realizan de a una por vez.
  • Estoy ejecutando SQL Server 2005 SP2 CU9 de 32 bits. Intenté actualizar a SP3 pero encontré fallas de instalación. Los problemas estaban ocurriendo antes de probar esta actualización.
  • La configuración del servidor es un clúster activo/activo; el problema ocurre en cualquiera de los nodos y la otra instancia no tiene este problema.
  • Tengo ~ 20 otras bases de datos en esta misma instancia de servidor pero solo este DB está viendo el problema.
  • Esta base de datos es bastante grande. Actualmente se encuentra en 76756.19MB. El archivo de datos es 11,513MB.
  • He iniciado sesión localmente en el cuadro Servidor utilizando Escritorio remoto.

Respuesta

9

El tipo de espera "Async_Network_IO" significa que está esperando que el cliente recupere el conjunto de resultados como el búfer de red de SQL Server está lleno. No puedo decir por qué su cliente no está recogiendo los datos de manera oportuna.

El otro caso que puede suceder es con servidores vinculados cuando SQL Server está consultando una tabla remota, en este caso SQL Server está esperando que el servidor remoto responda.

Algo que vale la pena mirar son los escáneres de virus, si están monitoreando las conexiones de red a veces pueden quedar rezagados, a menudo es evidente porque acaparan toda la CPU.

2

Suspendido significa que está esperando un recurso y se reanudará cuando obtenga su recurso. A juzgar por los tamaños que está retirando, parece que está en una consulta de tipo OLAP.

pruebe las siguientes cosas:

  1. Uso NOLOCK o establecer el nivel de transacción AISLAMIENTO en la parte superior de la consulta
  2. Revise su plan de ejecución y sintonizar la consulta para ser más eficientes
Cuestiones relacionadas