Was sind die Unterschiede zwischen "shrink space compact' und 'verschmelzen'?
In der oracle-Dokumentation sagt, daß bei änderung eines index-Klauseln shrink space compact
und coalesce
sind sich sehr ähnlich und könnten ersetzt werden durch jede andere, aber Tom gefunden einige Unterschiede im Verhalten.
Seit coalesce ist nicht verfügbar in der Standard edition der Oracle-Datenbank, ich nehme an, es sind einige Vorteile bei der Verwendung.
Also, was sind die Unterschiede? Kann ich shrink space compact
auf eine sich dynamisch ändernde index?
- Leider
coalesce
ist nicht für mich - es ist die enterprise option.. Und ich wollte herausfinden, obshrink space compact
besser alsrebuild
für meine Zwecke, denn mitrebuild
ich fast immer gegenüber der Wirtschaft von der Ressource.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die obige Antwort ist falsch. Grundsätzlich gibt es 4 Möglichkeiten.
1 - ALTER INDEX COALESCE
2 - ALTER INDEX SHRINK SPACE
3 - ALTER INDEX SHRINK SPACE COMPACT
4 - ALTER INDEX REBUILD
Optionen 1 und 3 NICHT frei-Blöcke. Sie nur Speicherplatz in vorhandenen Blöcken. Coalesce ein wenig schlechter job, es werden weitere Blöcke mit nur 25-50% freien Speicherplatz, während mit shrink space compact, es werden weitere Blöcke mit 75-100% freien Speicherplatz. Die Gesamtzahl der Blöcke, jedoch bleiben die gleichen. Beispielsweise wird ein index mit 200-Blöcke mit verschmelzen, und nach dem löschen von 1/5 der Zeilen nach dem Zufallsprinzip, haben ~1/5 der index-Blöcke haben 25-50% freien Speicherplatz, während der rest bleibt voll.
Auf der anderen Seite, schrumpfen Raum und aufbauen tun die Blöcke und führen Sie Sie in die bestehenden, wodurch die Gesamtzahl der Blöcke. Ich denke, der einzige Unterschied ist die Geschwindigkeit. Beim löschen werden nur 5% aus einer großen Tabelle, da gibt es keinen Grund zur Neuerstellung des gesamten index, und es wird sehr langsam sein. Allerdings schrumpft der Raum könnte ein bisschen schneller hier, weil es nicht die Neuerstellung der gesamten index nur eine Reorganisation der Blöcke.
Offensichtlich die Schnellste Wahl wäre, Koaleszenz oder schrumpfenden Raum mit kompakten option.
Zunächst Indizes müssen in der Regel nicht werden Häufig umgebaut. Sie wachsen im Allgemeinen eine verlässliche Größe und dort zu bleiben, und den Wiederaufbau, Sie erzeugt nur einen temporären nutzen, um Abfragen, die dann kompensiert durch erhöhte Belastung in Sie zu ändern, aufgrund einer erhöhten rate von block spaltet. Also vergessen Sie nicht, dass die beste Optimierung für ein Prozess ist, beseitigen Sie es vollständig -- wenn Sie denken, Sie haben eine Notwendigkeit für häufige Umbauten dann poste eine Frage und vielleicht die Ursache erklärt werden können und einen anderen Ansatz gefunden werden.
Sowieso, coalesce reduziert die Anzahl der Blöcke, die holding-index-Daten, damit freigesetzt wird, blockiert komplett, so dass Sie wieder verwendet werden kann für die neuen index-Einträge. Die frei gewordenen Blöcke noch, die dem index zugeordnet, obwohl. Dies kann verhindern, dass die Indizes von der wachsenden zu groß.
Schrumpfen wird etwas ähnlich, aber bewegt sich die besiedelten blocks zu ermöglichen, befreit Blöcke am "Ende" der index-segment zu werden freigegeben, aus es. So ist die index-segment wird tatsächlich kleiner. Dies erfordert eine exklusive Sperre auf die Tabelle.