Geheugengebruik access 2010

Status
Niet open voor verdere reacties.

john64

Gebruiker
Lid geworden
12 jun 2011
Berichten
268
Goedemorgen forum

Ik heb een inmiddels vrij grote database ontwikkeld, waarin veel formulieren opgenomen zijn.
De database is verdeeld in een backend met alle data, en een frontend met alle gebruikersinterfaces, en de nodige VBA.
Wat gebeurt er "onder de motorkap" van access als ik wissel tussen de diverse formulieren ? Als een formulier geladen wordt, wordt dan de bijbehorende data in een soort cache geplaatst?
Wat ik zie aan de grootte van de database op de harde schijf, is dat deze elke keer groter wordt nadat ik van formulier gewijzigd heb. Als ik weer een nieuw formulier open dan wordt de db weer.
Als ik terugkeer naar een al keer geopend formulier, dan blijft de grootte constant. Grootte op schijf wordt niet kleiner bij schakelen naar een formulier met minder data.

Het in beslag genomen geheugen volgens taakbeheer blijft echter wel redelijk constant. Schakel ik van een formulier met veel data, naar een formulier met minder data, dan wordt gebruikte geheugen ook minder.

Na afsluiten van de database wordt deze automatisch gecomprimeerd. De grootte van de db is dan ongeveer 9,5 Mb. Na een tijdje gespeeld te hebben met de diverse formulieren kan het zo zijn dat de database op schijf is gegroeid tot 12, 13 Mb.

Is mijn constatering correct? Zo ja, is hier wat aan te doen ? Ik heb het idee dat de werking naar verloop van tijd ook langzamer wordt.


mvg
John
 
Dat een database groeit naarmate je data muteert, klopt. En dat heeft weinig te maken met de grootte van de onder het formulier hangende tabel(len). Volgens mij leest Access een tabel in het geheugen in op basis van het aantal ingestelde Locks dat maximaal per tabel mag worden gebruikt, en dat je geheugengebruik dus groter is bij een grote tabel t.o.v. een kleinere tabel is dan ook logisch. Het geheugengebruik zal (maar dat lijkt dan net zo logisch) niet veranderen als je switcht van formulieren, omdat de data immers al ingelezen is. Werkgeheugen heeft overigens weinig tot niks te maken met opslaggeheugen, wat zich manifesteert in grotere bestanden. Dat verschijnsel ontstaat doordat Access ook de Transition log bijhoudt. Elke mutatie in een tabel wordt in dat Transition log weggeschreven. Pas bij comprimeren van een db worden de opgeslagen acties ook uitgevoerd, met als resultaat een kleinere database. Daarom is comprimeren best belangrijk, maar ook vervelend als je achteraf toch data zou willen terughalen uit de transition log. Die moet er dan natuurlijk nog wel zijn...

Deze link bevat een procedure waarmee je het MaxLocksPerFile kunt aanpassen. En wat meer informatie.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan