Discussion:
DB verkleinern
(zu alt für eine Antwort)
Joachim Hofmann
2004-01-20 15:17:05 UTC
Permalink
Hallo,

Zwei Fragen zum Verkleinern:

Im Enterprise Manager-Dialog zum Verkleinern steht auswählbar:
"Vor dem Verkleinern Seiten an den Dateianfang verschieben. (Die Leistung wird möglicherweise beeinträchtigt.)"
Ist das mit der Leistung jetzt nur temporär gemeint oder etwa generell, auch nach Abschluß?

Wenn die DB-Option zur "Automatischen Verkleinerung" eingeschaltet ist:
- Wann tut der Server denn sowas, geht das eventuell im laufenden Produktivbetrieb einfach los?
- Und: wird bei dieser Option dieses "Seiten an den Dateianfang verschieben" benutzt?

(Bei einem manuellen Verkleinerungstest hatte das Auslassen dieser Option *keine* Verkleinerung gebracht.)


Vielen Dank

Joachim
Elmar Boye
2004-01-20 23:00:43 UTC
Permalink
Hallo Joachim,
Post by Joachim Hofmann
"Vor dem Verkleinern Seiten an den Dateianfang verschieben. (Die
Leistung wird möglicherweise beeinträchtigt.)" Ist das mit der
Leistung jetzt nur temporär gemeint oder etwa generell, auch nach
Abschluß?
Nach Abschluss. Denn durch das verschieben werden Seiten vom
Ende dahin geschoben wo Platz ist. Dadurch kann die Defragmentierung
von Tabellen/Indizes erhöht werden. Siehe DBCC SHOWCONTIG.
Post by Joachim Hofmann
- Wann tut der Server denn sowas, geht das eventuell im laufenden
Produktivbetrieb einfach los?
Periodisch. Und zudem kanns dadurch passieren, das 5 Minuten
später die Datenbank wieder vergrössert wird. Was dann auch
zu physikalischer Defragmentierung führen kann. Deswegen sollte
die Option bei Produktionsservern nicht eingesetzt werden:
http://support.microsoft.com/?kbid=315512
INF: Considerations for Autogrow and Autoshrink Configuration
Post by Joachim Hofmann
- Und: wird bei dieser Option dieses "Seiten an den Dateianfang verschieben" benutzt?
Ja. Siehe Beschreibung zu "Verkleinern von Datenbanken" in
der SQL Server Dokumentation und Beschreibung der dahinter
liegenden Befehle DBCC SHRINKDATABASE bzw. DBCC SHRINKFILE.

Gruss
Elmar
Benno Hartmann
2004-01-21 07:33:06 UTC
Permalink
Hallo Elmar,
Post by Elmar Boye
Nach Abschluss. Denn durch das verschieben werden Seiten vom
Ende dahin geschoben wo Platz ist. Dadurch kann die Defragmentierung
von Tabellen/Indizes erhöht werden. Siehe DBCC SHOWCONTIG.
kann der SQL-Server wieder defragmentiert werden?

Viele Grüße

Benno
Elmar Boye
2004-01-21 09:15:18 UTC
Permalink
Hallo Benno,
Post by Benno Hartmann
Post by Elmar Boye
Nach Abschluss. Denn durch das verschieben werden Seiten vom
Ende dahin geschoben wo Platz ist. Dadurch kann die Defragmentierung
von Tabellen/Indizes erhöht werden. Siehe DBCC SHOWCONTIG.
kann der SQL-Server wieder defragmentiert werden?
phyisikalisch auf Dateiebene durch die gängigen Defragmentierungsprogramme.

Innerhalb der Datenbankdatei durch DBCC DBREINDEX, was üblicherweise
durch einen Wartungsplan (Optimierung) ausgeführt wird.

Gruss
Elmar
Benno Hartmann
2004-01-21 10:13:24 UTC
Permalink
Hallo Elmar,
Post by Elmar Boye
Post by Benno Hartmann
kann der SQL-Server wieder defragmentiert werden?
phyisikalisch auf Dateiebene durch die gängigen Defragmentierungsprogramme.
Innerhalb der Datenbankdatei durch DBCC DBREINDEX, was üblicherweise
durch einen Wartungsplan (Optimierung) ausgeführt wird.
Ich bin mir nicht sicher, aber der Parameter "fillfactor" des oben genannten
Befehls scheint mir recht wichtig zu sein. Hast du hierfür vielleicht
Erfahrungswerte was man hier angeben sollte?

Vielen Dank

Benno
Christoph Muthmann
2004-01-21 13:11:52 UTC
Permalink
Post by Benno Hartmann
Hallo Elmar,
Post by Elmar Boye
Post by Benno Hartmann
kann der SQL-Server wieder defragmentiert werden?
phyisikalisch auf Dateiebene durch die gängigen
Defragmentierungsprogramme.
Innerhalb der Datenbankdatei durch DBCC DBREINDEX, was üblicherweise
durch einen Wartungsplan (Optimierung) ausgeführt wird.
Ich bin mir nicht sicher, aber der Parameter "fillfactor" des oben
genannten Befehls scheint mir recht wichtig zu sein. Hast du hierfür
vielleicht Erfahrungswerte was man hier angeben sollte?
Hallo Benno,
die Werte hängen sehr stark von der Nutzung der Datenbank ab.
Hier ein paar Anmerkungen zum Füllfaktor für Indizes:
- Wert zwischen 0 und 100
- 100 bedeutet, Seiten zu 100% belegt
- sp_configure zeigt Standardwert an
- Standardwert 0 entspricht 100, Zwischenseiten aber nur zu 75% belegt

- Füllfaktor greift nur bei Create oder Rebuild
- Zwischendurch werden Seiten mit 50% gesplittet
- Daher regelmässig Rebuild durchführen
- Frequenz in Abhängigkeit der Änderungen

Achtung: bei Wartungsplänen spricht man von Freespace, was das genaue
Gegenteil von Fillfactor ist.

Indizes mit wenig Änderung können einen hohen Fillfactor haben, Indizes mit
viel Änderungen sollten einen kleineren Wert haben.

Änderungen beziehen sich hier natürlich immer auf Index-relevante Felder.
Falls Felder geändert werden, die nicht in dem Index sind, so ändert sich
natürlich auch hier nichts.

Ich selber habe allerdings die Erfahrung gemacht, daß wir mit dem Wert 100
recht gut fahren, wenn wir regelmässig ein Rebuild machen. Alles andere geht
meiner Meinung nach schon sehr in den Bereich von Feintuning, insbesondere
da der Wert ja nur bei einem Neuaufbau zieht.

Einen schönen Tag noch,
Christoph
--
(Please post ALL replies to the newsgroup only unless indicated otherwise)
Christoph Muthmann
2004-01-21 13:00:42 UTC
Permalink
Post by Elmar Boye
Post by Joachim Hofmann
"Vor dem Verkleinern Seiten an den Dateianfang verschieben. (Die
Leistung wird möglicherweise beeinträchtigt.)" Ist das mit der
Leistung jetzt nur temporär gemeint oder etwa generell, auch nach
Abschluß?
Nach Abschluss. Denn durch das verschieben werden Seiten vom
Ende dahin geschoben wo Platz ist. Dadurch kann die Defragmentierung
von Tabellen/Indizes erhöht werden. Siehe DBCC SHOWCONTIG.
Hallo Elmar,
ich schiebe es mal auf die späte Stunde, aber damit niemand durcheinander
kommt:
Du meintest sicher immer Fragmentierung anstelle von Defragmentierung, oder?

Ergänzend sei auch zu sagen, daß die Leistung natürlich auch während der
Verschiebung leidet, denn da passieren teilweise recht heftige
Plattenoperationen, wenn die Datenbank entsprechend zerklüftet ist.

Aktuelles Beispiel 54 GB in 2:55 Stunden aufgeräumt. Nachher nur noch 42 GB.

Einen schönen Tag noch,
Christoph
--
(Please post ALL replies to the newsgroup only unless indicated otherwise)
Elmar Boye
2004-01-21 15:41:18 UTC
Permalink
Hallo Christoph,
Post by Benno Hartmann
Post by Elmar Boye
Post by Joachim Hofmann
"Vor dem Verkleinern Seiten an den Dateianfang verschieben. (Die
Leistung wird möglicherweise beeinträchtigt.)" Ist das mit der
Leistung jetzt nur temporär gemeint oder etwa generell, auch nach
Abschluß?
Nach Abschluss. Denn durch das verschieben werden Seiten vom
Ende dahin geschoben wo Platz ist. Dadurch kann die Defragmentierung
von Tabellen/Indizes erhöht werden. Siehe DBCC SHOWCONTIG.
Hallo Elmar,
ich schiebe es mal auf die späte Stunde, aber damit niemand
das vielleicht und ein, zwei andere Dinge, die hier aber
nicht hingehören...
Post by Benno Hartmann
Du meintest sicher immer Fragmentierung anstelle von
Defragmentierung, oder?
Aber sich doch ;-(
Post by Benno Hartmann
Ergänzend sei auch zu sagen, daß die Leistung natürlich auch während
der Verschiebung leidet, denn da passieren teilweise recht heftige
Plattenoperationen, wenn die Datenbank entsprechend zerklüftet ist.
Versuche ich in der Regel auch zu vermeiden, in dem ich feste
Grössen vorgeben, so dass sich die physikalische Fragmentierung
auf einige wenige Schritte verteilt.
Und Luft innerhalb der Datenbank tut meist nicht weh, ausgenommen
man hat gerade einen Aufräumjob hinter sich.

Gruss
Elmar

Lesen Sie weiter auf narkive:
Loading...