Bei der Geodatabase-Komprimierung werden nicht erforderliche States und Zeilen aus den Systemtabellen entfernt, die Versionen und versionierte Änderungen protokollieren.
Was bedeutet Geodatabase-Komprimierung?
Bei der Komprimierung werden alle States entfernt, die nicht mehr von einer Version referenziert werden. Alle Zeilen in den Delta-Tabellen werden in die Business-Tabelle verschoben. Geodatabase-Komprimierung kann nur vom Geodatabase-Administrator ausgeführt werden, die Komprimierung wird jedoch unabhängig vom jeweiligen Besitzer der Version, auf alle States der Geodatabase angewendet.
Die Komprimierung ist aus folgendem Grund erforderlich: Wenn eine Geodatabase über einen Zeitraum hinweg bearbeitet wird, erhöhen sich die Größe der Delta-Tabellen und die Anzahl der States. Je umfangreicher die Tabellen und je zahlreicher die States, desto mehr Daten müssen von ArcGIS jedes Mal verarbeitet werden, wenn Sie eine Version anzeigen oder abfragen. Die größten Auswirkungen auf die Performance hat daher nicht die Anzahl der Versionen, sondern der Umfang der Änderungen in den Delta-Tabellen für jede Version. Im Ergebnis können die Versionen unterschiedliche Zeiten für die Reaktion auf Abfragen aufweisen.
Um die Datenbank-Performance aufrechtzuerhalten, muss der Geodatabase-Administrator in regelmäßigen Abständen eine Komprimierung ausführen, um nicht verwendete Daten zu löschen.
Sie können dazu den ArcGIS Desktop Befehl "Komprimieren", das Geoverarbeitungswerkzeug Komprimieren oder ein Python-Skript verwenden.
Was geschieht während der Komprimierung?
Während der Komprimierung wird zunächst die State-Tree-Konfiguration der Instanz in den Speicher eingelesen. Mithilfe dieser Information werden beim Komprimieren alle nicht zu einer Lineage gehörenden States gelöscht. Wenn Sie einen State löschen, werden alle mit dem gelöschten State verknüpften Zeilen der Delta-Tabellen gelöscht.
In einem weiteren Schritt werden alle States jeder einzelnen Lineage zu einem State zusammengefasst. In diesem Fall umfasst die Lineage eine Gruppe von States, die zu einem State zusammengefasst werden kann, ohne dass dabei die logische Ausprägung von Tabellen in einer bestimmten Version beeinflusst wird.
Zuletzt werden, sofern anwendbar, die Zeilen der Delta-Tabellen in die Basistabellen (oder Business-Tabellen) verschoben.
Bei jedem Schritt dieses Vorgangs werden die Datenbanktransaktionen beim Komprimieren der einzelnen Tabellen gestartet und wieder gestoppt. So kann überprüft werden, dass jede Tabelle in den unterschiedlichen Phasen des Komprimierungsvorgangs konsistent ist.
Die Komprimierung kann auch während der Ausführung gestoppt werden, da er auf eine direkte Konsistenz der Daten abzielt. Wenn daher während der Ausführung ein Fehler auftritt, diese fehlschlägt oder abrupt abbricht, sind die komprimierten versionierten Tabellen in Bezug auf die Darstellung einer beliebigen Version logisch richtig. Ein möglicher Grund für den Abbruch der Komprimierung liegt möglicherweise dann vor, wenn Sie die Komprimierung ausführen, während Benutzer mit der Geodatabase verbunden sind, und Sie dann feststellen, dass die Komprimierung einen Großteil Ihrer Systemressourcen beansprucht. In diesem Fall beenden Sie den Vorgang und führen Sie ihn erneut aus, wenn weniger oder keine Benutzer mit der Geodatabase verbunden sind.
Erstellen Sie nach der Komprimierung die gruppierten Indizes der Basistabellen neu, da eine Fragmentierung der Business-Tabellen auftreten kann.
Vollständiges Komprimieren einer Geodatabase
In einer vollständig komprimierten Geodatabase sind keine Zeilen in den Delta-Tabellen vorhanden, und der State-Tree wird auf 0 zurückgesetzt. Die größte Performance-Steigerung ergibt sich durch vollständige Komprimierung der Geodatabase. Gehen Sie dazu folgendermaßen vor:
- Gleichen Sie alle ausstehenden Änderungen der Child-Versionen mit der DEFAULT-Version ab, und schreiben Sie sie zurück. Als Geodatabase-Administrator können Sie sehen, in welcher Reihenfolge die Versionen standardmäßig abgeglichen werden sollten, in dem Sie im Dialogfeld Geodatabase-Verwaltung die Unterregisterkarte Abgleichreihenfolge der Registerkarte Versionen öffnen. Informationen zur Unterregisterkarte Abgleichreihenfolge finden Sie unter Versionseigenschaften.
- Löschen Sie die Versionen, nachdem Sie Bearbeitungen abgeglichen und zurückgeschrieben haben.
- Vergewissern Sie sich, dass kein Benutzer mit der Datenbank verbunden ist.
- Führen Sie den Komprimierungsvorgang aus.
Die Ergebnisse der jeweiligen Komprimierung in ArcGIS Desktop werden in der Tabelle SDE_compress_log angezeigt. Sie können auch anhand der Tabelle SDE_versions überprüfen, ob die State-ID für die Version "DEFAULT" auf 0 zurückgesetzt wurde. Wenn dies der Fall ist und keine weiteren offenen Versionen vorhanden sind, wurde eine vollständige Komprimierung der Datenbank erreicht.
Es kann sein, dass Sie vor einer Komprimierung nicht immer Versionen abgleichen, zurückschreiben oder löschen können oder die Benutzer von der Datenbank trennen können. Wenn Sie beispielsweise den Verlauf mithilfe von Versionen verfolgen oder Designversionen für ein Projekt beibehalten müssen, bleiben die historischen und die Designversionen einem State innerhalb des State-Trees zugeordnet und werden daher während des Komprimierungsvorgangs nicht gelöscht. Eine Verbesserung der Performance kann auch erreicht werden, wenn Sie zur Komprimierung nicht alle genannten Schritte ausführen.
Häufigkeit von Komprimierungen
Wie häufig die Geodatabase komprimiert werden muss, hängt davon ab, wie viele Bearbeitungsvorgänge in der Geodatabase ausgeführt werden. Wenn Sie viele Bearbeitungsvorgänge ausführen, sollten Sie die Geodatabase einmal täglich komprimieren. Bei einer mittleren oder geringen Anzahl von Bearbeitungsvorgängen sollten Sie die Datenbank mindestens einmal wöchentlich komprimieren.
Nach der Komprimierung der Geodatabase
Nachdem Sie die Komprimierung ausgeführt haben, sollten Sie die Geodatabase-Statistiken aktualisieren. Der Geodatabase-Administrator muss die Statistik in den versionierten Systemtabellen aktualisieren und einzelne Benutzer können die Statistik ihrer bearbeiteten Datasets aktualisieren.