Wir verwenden eine proprietäre Anwendung, die auf SQL Server 2005 basiert und viele HEAP-basierte Tabellen enthält (dh keinen Clustered-Index). Im Laufe der Jahre sind diese Tabellen stark fragmentiert (z. B. 99% Fragmentierung). Ich muss sie defragmentieren.
In SQL Server 2005 gibt es keine Möglichkeit, dies direkt zu tun. Ich kann entweder:
- Erstellen Sie einen Clustered-Index für ein bereits vorhandenes Feld und behalten Sie ihn bei
- Erstellen Sie diesen Index, erstellen Sie die Tabelle neu und löschen Sie sie dann
- Mein eigenes Feld hinzufügen (zB Autoincrement-Schlüssel)
Dies ist eine große App, die von einem Anbieter geschrieben wurde - eine riesige Black Box. Ich bin nicht bestrebt, mit ihren Sachen herumzuspielen. Ich weiß nicht viel darüber, wie die Tabellen verwendet werden. Was ist die geringste Auswirkung, um dies zu tun?
Und als Folge: Es gibt viele dieser HEAP-basierten Tabellen, über ein Dutzend Datenbanken, die von der Anwendung verwendet werden. Gibt es eine Möglichkeit, Auswahl 2 oder 3 zu automatisieren? Oder wie soll ich auswählen, welche Tabellen geändert werden sollen?
UPDATE:
Um die Fragen zu beantworten, die sich aus den (sehr hilfreichen) Antworten ergeben:
- Die Leistung war nicht akzeptabel. Der Anbieter teilte meinem Kunden mit, dass dies daran liegt, dass die Tabellen extrem fragmentiert sind und es in der Verantwortung des Kunden liegt, sie regelmäßig zu defragmentieren
- Wir haben zwei Instanzen der Anwendung: eine Testinstanz und eine Produktionsinstanz
- Ich habe zuerst alle Clustered-Tabellen defragmentiert, wodurch die Leistung erheblich verbessert wird
- Das Support-Team des Anbieters war sehr wenig hilfreich. Sie haben uns gesagt, dass es unsere Verantwortung ist, die Tische zu defragmentieren. Wenn ich sie gefragt habe, wie sie die Defragmentierung von HEAP-basierten Tabellen empfehlen, sollte ich einen Clustered-Index hinzufügen? - Sie haben nur geantwortet "Das ist eine Microsoft-Frage".
Kurz gesagt, das Kundenserviceteam hat klargestellt: Sie müssen die Tabellen defragmentieren, wie Sie es tun, ist Ihr Geschäft.
Wie für zukünftige Versionen: Ja, neue Versionen entwickelt werden, und sie werden schließlich zu SQL Server migrieren 2012. Aber sie brauchen Performance - Lösungen heute .
Schließlich, da die Defragmentierung zu lange dauert: Es spielt keine Rolle. Sie haben riesige Tische mit 99% Fragmentierung; Die Anwendung wird nachts nicht verwendet. Ich kann leicht Stunden damit verbringen, sie zu defragmentieren.