Angehaltener Status in SQL Activity Monitor

Was würde dazu führen, dass eine Abfrage, die in Management Studio durchgeführt wird, angehalten wird?

  1. Ich führe eine einfache Auswahl Top 60000 aus einer Tabelle (die 11 Millionen Zeilen hat) und die Ergebnisse kommen innerhalb von ein oder zwei Sekunden zurück.
  2. Ändere ich die Abfrage in Top 70000 und die Ergebnisse dauern bis zu 40 min.

Von der Suche nach einem anderen, aber verwandten Problem stieß ich auf jemanden mit DBCC FREEPROCCACHE, um es zu beheben.

  1. Ich führe DBCC FREEPROCCACHE aus und aktweitere dann die Abfrage für 70000 und es schien zu funktionieren.

Das Problem tritt jedoch immer noch bei einer anderen Abfrage auf.

  1. Ich erweitere, um 90000 zu sagen, oder wenn ich versuche, die Tabelle mit [Right->Open Table] zu öffnen, zieht es etwa 8000 Datensätze und stoppt.

Überprüfen des Aktivitätsprotokolls, wenn ich die offene Tabelle mache, wird angezeigt, dass die Sitzung mit dem Wartetyp "Async_Network_IO" angehalten wurde. Für die Sitzung, die die Auswahl von 90000 ausführt, lautet der Status "Schlafen", dies ist der gleiche Status für die oben ausgewählte 70000-Abfrage, die zurückgegeben wurde, aber in 45min. Es ist mir seltsam, dass der Status "Schlafen" zeigt und es scheint sich nicht in "Runable" zu ändern (ich habe den Aktiviy-Monitor, der immer 30Sekunden erfrischend ist).

Zusatznotizen:

  • Ich führe nicht beide Open Table und wähle 90000 gleichzeitig aus. Alle Abfragen werden nacheinander durchgeführt.
  • Ich führe 32bit SQL Server 2005 SP2 CU9. Ich habe versucht, ein Upgrade auf SP3 durchzuführen, aber ich habe Installationsfehler ausgeführt. Die Probleme traten auf, bevor ich dieses Upgrade ausprobierte.
  • Server-Setup ist ein Active/Active-Cluster, bei dem das Problem auf beiden Knoten auftritt, und auf der anderen Instanz liegt dieses Problem nicht vor.
  • Ich habe 20 andere Datenbanken auf derselben Serverinstanz, aber nur diese eine DB sieht das Problem.
  • Diese Datenbank wird ziemlich groß. Es ist derzeit bei 76756.19MB. Die Datendatei beträgt 11.513 MB.
  • Ich bin lokal auf der Server-Box mit Remote Desktop angemeldet.

Antwort auf "Angehaltener Status in SQL Activity Monitor " 2 von antworten

Der Wartetyp "Async_Network_IO" bedeutet, dass der Warten auf den Client, der das Resultset abruft, da der Netzwerkpuffer von SQL Server voll ist. Warum Ihr Kunde die Daten nicht rechtzeitig abholt, kann ich nicht sagen.

Der andere Fall kann mit verknüpften Servern passieren, wenn SQL Server eine Entfernttabelle abfragt, in diesem Fall wartet SQL Server auf die Antwort des Remoteservers.

Etwas, das einen Blick wert ist, sind Virenscanner, wenn sie Netzwerkverbindungen überwachen, können sie manchmal verzögert werden, was oft dadurch offensichtlich wird, dass sie die gesamte CPU hoggen.

Angehalten bedeutet, dass es auf eine Ressource wartet und wieder aufgenommen wird, wenn sie ihre Ressource erhält. Nach den Größen zu urteilen, die Sie zurückziehen, scheint es, dass Sie sich in einem OLAP-Abfragetyp befinden.

Probieren Sie die folgenden Dinge aus:

  1. Verwenden Sie NOLOCK oder setzen Sie die TRANSACTION ISOLATION LEVEL oben in der Abfrage
  2. Überprüfen Sie Ihren Ausführungsplan und stimmen Sie die Abfrage auf effizientere