SQL Server 2005 - Wie oft sollten Sie Indizes neu erstellen?

7

Ich habe kürzlich ein Projekt übernommen und sie haben einen SQL-Job-Setup, der alle drei Stunden ausgeführt wird und die Indizes neu erstellt, die in den ASP.NET Membership-Datenbanktabellen gefunden werden.

Das scheint ziemlich hoch zu sein, um Indizes 8 Mal am Tag neu zu erstellen. Ich bekomme jeden Tag ungefähr 2000 neue Benutzer und insgesamt ungefähr 2 Millionen registrierte Benutzer.

Was würden Sie für einen korrekten Zeitplan für den Indexaufbau empfehlen?

    
Jack Marchetti 25.08.2009, 21:53
quelle

4 Antworten

11

Ihre Deadlocks können definitiv mit dem Neuaufbau der Indizes zusammenhängen. Es besteht auch kein Zweifel, dass diese Indizes nicht so häufig neu erstellt werden müssen. Sie sollten jedoch zumindest die Option ONLINE in Erwägung ziehen, wenn Sie verhindern können, dass der Index gelöscht wird, bevor er neu erstellt wird.

Hier ist eine Richtlinie, die wir verwenden:

  

Der Index sollte beim Index neu erstellt werden   Fragmentierung ist größer als 40%. Index   sollte beim Index reorganisiert werden   Die Fragmentierung liegt zwischen 10% und 40%.   Index Neuerstellungsprozess verwendet mehr CPU   und es sperrt die Datenbankressourcen.   SQL Server-Entwicklungsversion und   Die Enterprise Version hat die Option ONLINE,   was aktiviert werden kann, wenn Index ist   wieder aufgebaut. ONLINE Option behält den Index   verfügbar während des Umbaus.

Quelle: Ссылка

    
apiguy 25.08.2009, 22:04
quelle
6

Eine gute Faustregel ist REBUILD, wenn über 30% fragmentiert, REORGANIZE zwischen 10% und 30%.

Kümmere dich nicht um Tabellen für weniger als 1000 Seiten, du wirst es nicht bemerken, und selbst nachdem du einen REBUILD für einen über 30% ausgeführt hast, bleibt er oft bei 30%.

Sie sollten wahrscheinlich versuchen, ziemlich selten, wöchentlich höchstens für eine durchschnittliche Datenbank zu reorganisieren. Wenn Sie die Indizes häufiger defragmentieren müssen, müssen Sie wahrscheinlich die Füllfaktoren und den Abstand neu berechnen.

Eine Ausnahme ist nach dem Laden von Massen-Daten, wo es üblich ist, die Indizes zu fragmentieren (manchmal ist es besser, den Index zu deaktivieren oder die Indizes zu löschen und sie neu aufzubauen, abhängig von den geladenen Daten).

Also zusammenfassend scheint 8 mal am Tag übertrieben.

Referenzen:
Ссылка
Ссылка
Ссылка
Ссылка

    
Chris Chilvers 25.08.2009 22:11
quelle
3

Erfassen Sie das Deadlock-Diagramm, und Sie haben eine tatsächliche Antwort auf Deadlocking, im Gegensatz zu rate . Angesichts der Tatsache, dass ein Deadlock ein relativ seltenes Ereignis ist (oder zumindest sein sollte), kann man Profiler ziemlich sicher über eine lange Zeit anhängen und nur erfassen das Locks/Deadlock Graph -Ereignis.

    
Remus Rusanu 25.08.2009 22:09
quelle
0

Beeinträchtigt der Neuaufbau die Systemstabilität oder beansprucht zu viel Systemzeit?

Wenn Sie mit Nein antworten - berühren Sie es nicht:)

    
ilya.devyatovsky 25.08.2009 21:55
quelle