Mein aktuelles Projekt sendet ständig Abfragen an einen SQL Server und es kann 100% des Arbeitsspeichers oder der CPU verwenden.Ermitteln der SQL Server-Auslastung mit einer Abfrage
Wie kann ich überprüfen, ob der Server in einer gespeicherten Prozedur Vollauslastung nähert, damit ich entscheiden kann, ob die Abfragen oder nicht ausführen oder einige Einstellungen in einer Tabelle speichern, so dass die folgenden Abfragen, um die Arbeitsbelastung wissen können, ist hoch und entscheiden, was zu tun ist
Wenn nicht, wie kann ich verhindern, dass SQL Server die volle Auslastung erreicht?
Weitere Informationen über den Fall: Im Moment weiß ich, in unserem aktuellen Testserver 40-50 Abfragen pro Sekunde (eine bestimmte Stored Procedure) verarbeiten kann. Und jetzt entscheiden wir, wie viele Abfragen jede Sekunde an den Server gesendet werden. Wenn wir die Menge sogar um 1 höher als erwartet einstellen, werden die Abfragen langfristig den virtuellen Speicher füllen und der Client muss seine SQL Server-Instanz regelmäßig neu starten.
Strebte Ergebnisse (für Kopfgeldjäger):
@memory_usage float, @cpu_usage float; /* in percentage */
Alle Ideen sind willkommen. Vielen Dank.
Vorzeitige Optimierung ist die Wurzel allen Übels. – Andomar
Basierend auf Ihrer Frage, denke ich, würde ich zurücktreten und einen alternativen Ansatz betrachten. –
Zuerst, wenn Sie den virtuellen Speicher auf Ihrem Server verwenden, stellen Sie sicher, dass Ihre Instanz die Einstellung für den maximalen Speicher hat. SQL Server ist ziemlich gut darin, den Cache-Speicher zu verwalten, so dass Sie die Instanz (für dieses spezielle Problem) nie neu starten müssen, es sei denn, Sie nehmen Speicher, der vom Betriebssystem benötigt wird. Es gibt viele Artikel darüber, wie viel Speicher das Betriebssystem zu verlassen, aber Sie könnten beginnen, indem Sie auf BOL hier: http://msdn.microsoft.com/en-us/library/ms178067.aspx. Es ist 2012, aber ich bin mir nicht sicher, welche Version Sie verwenden. –