ich in der gleichen Situation bin jetzt, hier ist mein Ansatz (SQL Server 2008):
Erstellen Sie eine separate "Numbers" Tabelle mit Millionen von Zeilen von Beispieldaten. Die Tabelle kann zufällige Zeichenfolgen, GUIDs, numerische Werte usw. enthalten. Schreiben Sie eine Prozedur, um die Beispieldaten in Ihr Schema einzufügen. Verwenden Sie das Modul (%) einer Zahlenspalte, um verschiedene Benutzer-IDs usw. zu simulieren.
Erstellen Sie eine weitere "NewData" -Tabelle ähnlich der ersten Tabelle. Dies kann verwendet werden, um neue Datensätze zu simulieren, die hinzugefügt werden.
Erstellen Sie eine "TestLog" -Tabelle, in der Sie Zeilenanzahl, Startzeit und Endzeit für Ihre Testabfragen aufzeichnen können.
Schreiben Sie eine gespeicherte Prozedur, um den Arbeitsablauf zu simulieren, den Sie von Ihrer Anwendung erwarten, wobei Sie je nach Bedarf neue oder vorhandene Datensätze verwenden.
Wenn die Leistung schnell scheint, bedenken Sie die Wahrscheinlichkeit eines Cache-Fehlers! Wenn Ihr Produktionsserver beispielsweise über 32 GB RAM verfügt und Ihre Tabelle 128 GB beträgt, wird eine zufällige Zeilensuche wahrscheinlich zu> 75% nicht im Puffercache gefunden.
Um dies zu simulieren, können Sie den Cache löschen, bevor Sie Ihre Abfrage ausgeführt wird:
DBCC DROPCLEANBUFFERS; (Wenn Oracle: ALTER SYSTEM FLUSH SHARED POOL)
Sie können eine 100x Verlangsamung der Leistung feststellen, wie Indizes und Datenseiten jetzt von der Festplatte geladen werden müssen.
Ausführen SET STATISTICS IO ON; um Abfragestatistiken zu sammeln. Suchen Sie nach Fällen, in denen die Anzahl der logischen Lesevorgänge für eine Abfrage sehr hoch ist (> 1000). Dies ist normalerweise ein Zeichen für einen vollständigen Tabellenscan.
Verwenden Sie die Standardtechniken, um die Abfragezugriffsmuster (Scans vs. Suchvorgänge) zu verstehen und die Leistung zu optimieren.
Fügen tatsächlichen Ausführungsplan, SQL Server Profiler
Können Sie zu jedem Punkt ein wenig genauer sein, wie? Zum Beispiel könnte Analysieren der Datenbank bedeuten: "Schau dir das Schema an. Macht es Sinn?" –
Ich habe basierend auf deinen Kommentaren einige weitere Informationen hinzugefügt. – northpole