Index erneuern?

25/09/2007 - 12:56 von Phil Belloni | Report spam
Hi

MS SQL 2000, NT4
Tabelle1 0'000 Datensàtze

Eine normale Select ohne Kriterien an diese Tabelle wird schnell ausgeführt.
Kaum setze ich ein Kriterium auf ein Indexiertes Feld (DatumEvent), arbeitet
der Server wie wahnsinnig und gibt aber nach einiger Zeit ein Timout.
Die Tabelle bekommt pro Tag ca. 3'000 neue Datensàtze. Die Tabelle wird
regelmàssig "gesàubert", bzw. einfach Datensàtze (nach Archivierung)
gelöscht.

1. Nun, kann es sein, dass die Indexliste gesàubert werden muss? Deswegen
der Select mit Kriterien einen Timeout gibt?
2. Bei MSSQL2005 heisst der SQL Befehl: ALTER INDEX ALL ON dbo.meineTabelle
Rebuild; wie bei MSSQL2000?
3. Oder soll ich einfach den Wizard benutzen?
4. Wird da die Datenbank wàhrend dem Rebuild blockiert? (C++ Services laufen
im Hintergrund, und sonstige Systeme müssten angehalten und neu gestartet
werden)

Das System ist ziemlich "heiss" (Feuermeldezentrale), deshalb Frage ich
lieber genauer nach ;-)

Gruss und Dank
Phil
 

Lesen sie die antworten

#1 Elmar Boye
25/09/2007 - 22:10 | Warnen spam
Hallo Phil,

Phil Belloni schrieb ...
MS SQL 2000, NT4
Tabelle1 0'000 Datensàtze

Eine normale Select ohne Kriterien an diese Tabelle wird schnell
ausgeführt. Kaum setze ich ein Kriterium auf ein Indexiertes Feld
(DatumEvent), arbeitet der Server wie wahnsinnig und gibt aber nach
einiger Zeit ein Timout.



Der Server "vergibt" gewöhnlich kein Timeout, das ist
eine Anwendungseinstellung, siehe CommandTimeout.

Die Tabelle bekommt pro Tag ca. 3'000 neue Datensàtze. Die Tabelle wird
regelmàssig "gesàubert", bzw. einfach Datensàtze (nach Archivierung)
gelöscht.

1. Nun, kann es sein, dass die Indexliste gesàubert werden muss?
Deswegen der Select mit Kriterien einen Timeout gibt?



Die Indizes werden automatisch mitgepflegt.
Allerdings werde Tabelle wie Indizes durch hàufige
Anfüge- und Löschaktionen fragmentiert.
Um das zu beheben, sollte regelmàssig "DBCC DBREINDEX"
ausgeführt werden, z. B. über einen Wartungsplan.
Auch sollte die Statistiken der Tabelle
aktuell sein, siehe "UPDATE STATISTICS"

2. Bei MSSQL2005 heisst der SQL Befehl: ALTER INDEX ALL ON
dbo.meineTabelle Rebuild; wie bei MSSQL2000?



Nein, die Syntax ist neu beim SQL Server 2005 - siehe oben.
Schau in die SQL Server 2000 Online Dokumenation:
http://www.microsoft.com/downloads/...x?FamilyID¦f79cb1-a420-445f-8a4b-bd77a7da194b&DisplayLang=de

3. Oder soll ich einfach den Wizard benutzen?



Die Wartungsplàne zu Nutzen ist der einfachste Weg.

4. Wird da die Datenbank wàhrend dem Rebuild blockiert?



Die Datenbank in der Gesamtheit , aber beim Reorganisieren
der Tabelle werden Sperren erzeugt und der Server hat
an sich etwas mehr zu tun.
Deswegen sollte das in einer weniger aktiven Zeit (z. B.
nachts, am Wochenende) erfolgen.

Gruss
Elmar

Ähnliche fragen