Wir haben Probleme mit der Datenbankperformance, und ich habe viel Erfahrung mit .NET Profilern und führe immer die Analyse in der App durch, aber ich warte wie viele Entwickler auf wirklich spät (wenn es ein Problem ist) ) zu analysieren und zu versuchen, die Daten zur Behebung des Problems zu sammeln.
Dies ist wahrscheinlich nicht eine einzige Antwort post nur mehr von einem "HELFEN, ICH BIN EIN DB IDIOT" Beitrag und auf der Suche nach irgendeiner Richtung persönlichen Ratschläge, Empfehlungen und Erfahrungen, wie man Probleme aufspüren.
Was das Setup betrifft, das wir mit SQL 2005 verwenden, habe ich in der Produktion nur sehr eingeschränkten Zugriff darauf, SQL Database Engine Tuning Advisor und SQL Profiler über eine Portalschnittstelle auszuführen, die ich kopieren und einfügen kann, aber das ist alles. Eine wichtige Sache, die ich tun möchte, ist eine echte Momentaufnahme von Produktionsabfragen und -aufrufen, damit ich sie in einer niedrigeren Umgebung in die Tuning-Engine laden kann, um die DB zu finden, damit ich die Empfehlungen der Engine-Optimierung erhalten kann Berater.
Dieses Skript kann verwendet werden, um festzustellen, ob Sie die richtigen Indizes ausgewählt haben. Sie müssen sehen, wie oft der Index zum Suchen verwendet wird, und vergleichen Sie ihn mit der Häufigkeit, mit der der Index aktualisiert wird. Seek-Leistung geht zu Lasten der Update-Leistung. Und was noch schlimmer ist, wenn der Index häufig aktualisiert wird, führt dies dazu, dass der Index fragmentiert wird und die Statistiken veraltet sind.
Sie sollten auch den range_scan_count mit singleton_lookup_count vergleichen. Der Bereichsscan wird vor der Singleton-Suche bevorzugt. Ein Singleton-Lookup kann der Grund für eine Indexsuche und eine Schlüsselsuchoperation sein. Das heißt, dass sql für jede in der Indexsuche gefundene Zeile die Datenseite im gruppierten Index sucht, und das ist in Ordnung, sagen wir ein paar tausend, aber nicht für Millionen von Zeilen.
%Vor%Hier sind einige Links, die dich auf deiner Suche nach Leistung unterstützen sollten.
Welche Ressourcen gibt es für die Datenbank-Leistungsoptimierung?
Tricks zur bevorzugten Leistungsoptimierung
Welche generischen Techniken können angewendet werden, um SQL zu optimieren Fragen?
Der beste Weg, um die Leistung zu verbessern (und irgendwie Failover einzuschließen)
Wenn Sie den Profiler zum Speichern der Ereignisse in einer Tabelle verwenden können, ist es kein Problem, den Database Tuning Advisor (DTA) zu verwenden, um die Datenbank aus der Protokolltabelle zu optimieren, aber ich persönlich benutze den DTA überhaupt nicht . Es braucht viel Zeit, um das DTA zu nutzen, und ich möchte mehr Kontrolle über das, was passiert.
Wenn Sie den Besitzer des Servers überzeugen können, eine neue Datenbank namens "SQLToolkit" zu erstellen und Ihnen Ausführungsrechte für Prozeduren zu geben, dann habe ich ein paar Prozeduren, die Ihnen helfen werden, die richtigen Indizes auszuwählen.
%Vor%Auf Nachfrage sende ich ein weiteres nützliches Skript, um festzustellen, wie oft und wie lange ein Index aufgrund des Sperrmechanismus in SQL blockiert ist:
%Vor%Tags und Links sql performance