Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

DB komprimieren

Begonnen von accessy, Januar 09, 2013, 19:58:16

⏪ vorheriges - nächstes ⏩

accessy

Meine DB hat 47MB.
Ich gehe auf "Komprimieren und Reparieren" und erhalte dann 16MB.
Ich schließe meine DB und es bleiben 16MB.
So weit so gut.

Ich öffne die DB wieder und kann ganz normal damit arbeiten.
So sieht es zumindest aus. Ich kann erstmal keine Veränderungen feststellen.
Die DB bleibt jetzt in diesem komprimierten Zustand. So scheint es zumindest.
Auf die unkomprimierte Variante kann man wohl auch nicht wieder zurück.

Jetzt frage ich mich natürlich, warum Access nicht von vornherein die DB komprimiert.
Wo ist denn Logik bei der ganzen Sache?
Kann mir das jemand näher bringen?

MzKlMu

#1
Hallo,
das ist ganz normales Verhalten einer Datenbank, nicht nur Access. Fast jede Datenbank muss regelmäßig komprimiert werden. Das hat mit Zip oder ähnlichem nicht zu tun.

In einer Datenbank werden Indizetabellen geführt. Für jedes indizierte Feld wird intern eine Tabelle angelegt. Z.B, Du indizierst das Feld Bestellnnummer, dann entsteht eine extra Tabelle (die siehst Du nicht) mit dem Datensatzzeiger (intern, siehst Du auch nicht, hat mit dem Primärschlüssel nichts zu tun) und dem Feld Bestellnummer.

1 1234
2 2345
3 3456

Die erste Zahl ist der Datensatzzeiger, die 2. die Bestellnummer.

Wenn jetzt ein Datensatz gelöscht wird, wird dieser zunächst nicht wirklich gelöscht, sondern erhält nur ein Löschkennzeichen

Die Tabelle sieht dann so aus, wenn 2345 gelöscht wird.

1 1234
2 #gelöscht
3 3456

Das wird alles erst bei einer Komprimierung korrigiert, dann sieht die Tabelle so aus:

1 1234
2 3456

Erst nach einer Komprimierung sind gelöschte Datensätze wirklich weg.
Daher ist erst nach der Komprimierung die DB kleiner und bleibt auch kleiner bis wieder Daten dazu kommen.
Das ist ganz normales Verhalten einer Datenbank (nicht nur Access), das muss man so machen, da man nicht bei jeder Aktion die Inizetabellen neu schreiben will. Das würde die Performance drücken.

Du solltest Dir mal ein Buch über relationale Datenbanken besorgen und lesen. Das sind Datenbankgrundlagen, die mit Access nichts zu tun haben.

Auch von gelöschten Formularen und Berichten bleiben noch Reste, die erst nach der Komprimierung verschwinden. Das ist aber Access spezifisch.


Regelmäßiges Komprimieren ist bei einer DB unerlässlich, besonders während der Entwicklung.
Gruß Klaus

accessy

Danke für die wirklich interessante Aufklärung dazu.
So werde ich denn mal meine DB regelmäßig komprimieren.