Ich habe versucht, die Leistung zu erhöhen und Deadlocks in einer SQL Server 2005-Instanz zu diagnostizieren. Es hatte SQL Server 2000 bis vor einem Monat ausgeführt, als ein In-situ-Upgrade durchgeführt wurde. Nach dem Upgrade gab es eine Reihe von Problemen: Die Leistung ist niedrig und Deadlocks sind weit oben. MS schlug vor, den Datenbankoptimierungsratgeber 2005 (DTA / DETA) zu verwenden.
Ich bin generell skeptisch gegenüber automatisierten Tools wie diesem, aber die Nachricht, die DTA beim Start hochgeworfen hat, hat mich wirklich erschreckt:
"Wählen Sie im Abschnitt Workload eine Datenbank aus, auf die der Datenbankoptimierungsratgeber zugreifen soll Verbindung zur Analyse der Arbeitslast Wenn Ihre Arbeitslast Ereignisse oder Transact-SQL enthält Anweisungen, die die Datenbank ändern, ändert auch der Datenbankoptimierungsratgeber den Datenbank während der Analyse der Arbeitsbelastung. Wählen Sie schließlich eine oder mehrere Datenbanken oder bestimmte Tabellen zu tunen. "
Was zumindest für mich bedeutet, dass alle Anweisungen bei der Analyse der Arbeitslast erneut ausgeführt werden. Ist das der Fall? Wenn ja, Rollbacks von Anweisungen und Transaktionen, oder einfach nur alles in einer Trace-Datei wörtlich durchkauen?
Eine Nebenfrage: Welchen Unterschied macht die "Database for Workload Analysis"? Es ist standardmäßig Master. Ist es sinnvoller, ihn als Master zu belassen oder den Namen der Datenbank zu ändern, die ich einstellen möchte?
Vielen Dank im Voraus!
Aaron
Ich habe es mehrere Male in einer unternehmenskritischen Datenbank mit Millionen von Datensätzen verwendet, während Benutzer Daten in der Datenbank änderten, und es funktioniert perfekt für mich. Es hat nie Daten verändert oder beschädigt. Das einzige, was es getan hat, ist, die Dinge zu verlangsamen, während es die Indexänderungen anwendete.
Ich weiß sicher, dass die Anweisungen nicht erneut ausgeführt werden, weil ich einige Prozesse habe, die die Daten ändern. Ich habe diese beim Profiler absichtlich ausgeführt und dann den Tuning-Assistenten verwendet, und ich hätte gewusst, ob diese bestimmten Anweisungen erneut ausgeführt würden. Die Arbeit, die getan wird, ist sehr offensichtlich und hätte zu offensichtlichen Diskrepanzen geführt.
Alles in allem ist es eine gute Idee, eine Sicherungskopie Ihrer Datenbank zu haben, nur für den Fall.
Tags und Links sql-server performance