AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Speicherbedarf von Access-DB sehr groß
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherbedarf von Access-DB sehr groß

Ein Thema von KPBecker · begonnen am 7. Mai 2011 · letzter Beitrag vom 10. Mai 2011
Antwort Antwort
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#1

Speicherbedarf von Access-DB sehr groß

  Alt 7. Mai 2011, 16:03
Datenbank: MS Access • Version: 2003 • Zugriff über: ADO Jet-Engine
Hallo, Delphi-Praktiker,

eine Applikation erzeugt große Mengen von Textdateien mit Größen von 4-15 kB, im Mittel ca. 6 kB. Dieses Dateien ähneln Ini-Dateien.
Um nicht Verzeichnisse mit > 100.000 Dateien bearbeiten zu müssen, möchte ich diese Dateien mit einem kleinen Delphi-Programm in einer Access-DB ablegen.
(Verzeichnis durchsuchen mit FindFirst/FindNext, Lesen als StringList mit LoadFromFile, Speichern mit SQL als CommaText, ein Satz pro Datei.)
Felder: Primary-Key, Dateiname (8 Zeichen), Dateidatum, Text als Memo (4.000 - 15.000 Zeichen je Eintrag).

Zu meiner (unangenehmen) Überraschung benötigt die DB ca. 2,5x soviel Platz wie die einzelnen Dateien.
Die Frage, ob PrimKey, Dateiname und Datum indiziert sind, spielt dabei praktisch keine Rolle. Komprimieren der DB hilft auch nicht weiter. Der Overhead durch CommaText erklärt die Situation auch nicht annähernd.

Frage:
Wie kann das sein ? Wofür wird dieser Platz benötigt ?

Vielen Dank,
Klaus-Peter
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: Speicherbedarf von Access-DB sehr groß

  Alt 7. Mai 2011, 16:18
Die DB speichert ja nicht nur die Daten selbst, sondern wohl auch weitere Informationen, sodass Abfragen wesentlich schneller von statten gehen können. Ich denke, dass wohl auch diverse Caches angelegt werden, sodass z.B. wenn eine Abfrage mehrfach kommt, nicht immer erneut berechnet werden muss.

Und was verstehst du eigentlich unter groß? Wenn eine DB mal mehrere MB groß ist, wäre das imho immer noch nicht wirklich groß. Kommt halt zusätzliche auf die Datenmenge an.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Speicherbedarf von Access-DB sehr groß

  Alt 7. Mai 2011, 18:30
Ich würde mal tippen, dass ACCESS Memos auch mit festen, minimalen Blockgrößen und Vielfachen davon arbeitet, bspw. 8KB.
Wenn Du die Anzahl der Dateien mal dieser (vermuteten 4,8,16.. Kb) Größe nimmst, oder auch noch alle größer 8KB mit 8KB mal 2 usw. rechnest, kommst Du ja vielleicht auf die Größenordnung.
Einfach als Proof.

Wenn Du Platz sparen möchtest, könntest Du doch ein ZIP File oder einen komprimierten Ordner nehmen. Vielleicht gibts da mittlerweile noch andere tolle Möglichkeiten.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.210 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Speicherbedarf von Access-DB sehr groß

  Alt 7. Mai 2011, 18:45
Sind die Textdateien Ansi-Codiert? Access speichert String als Unicodestrings und diese haben damit den doppelten Speicherbedarf gegenüber deiner Ansi-Textdateien.

Falls der Platz wichtig ist müsstest du die Textdatei als Blob ZIP-Komprimiert speichern oder ein DBMS nehmen das das automatisch macht (komprimierten von text)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Speicherbedarf von Access-DB sehr groß

  Alt 9. Mai 2011, 08:55
@Bernhard: Gute Idee! Ich versuche einmal, die Datei zeilenweise als ANSI-String in die DB zu bringen.

@jobo: Das wäre aber sehr hinderlich, möglich ist das schon. Ich versuche, Informationen über eine Blockgröße für Memos in Access zu bekommen.

@shark: 100.000 Dateien belegen im Verzeichnis ca. 600 MB (bei 6kB/Datei). Schon bei 500.000 Dateien ist das Limit von Access (3 GB) erreicht. Das und dazu der Faktor 2,5 im Speicherbadarf zwischen Verzeichnis --> DB macht die Sache so, wie sie sich jetzt darstellt, in der Praxis für mich uninteressant.
Der Speicherbedarf geht praktisch linear mit der Zahl der Sätze hoch, so daß ein Overhrad für Verwaltungs- und Optimierungszwecke keine große Rolle zu spielen scheint. Der Einfluß von Indizes ist ebenfalls sehr klein. Der Platz wird wohl zur Ablage des Textfeldes gebraucht.

Euch allen vielen Dank !
Klaus-Peter
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.210 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Speicherbedarf von Access-DB sehr groß

  Alt 9. Mai 2011, 09:28
@Bernhard: Gute Idee! Ich versuche einmal, die Datei zeilenweise als ANSI-String in die DB zu bringen.
Da müsstest du die Textdateien als Blob speichern. Access hat nur einen Unicode-Textdatenetyp.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Speicherbedarf von Access-DB sehr groß

  Alt 9. Mai 2011, 13:29
@shark: 100.000 Dateien belegen im Verzeichnis ca. 600 MB (bei 6kB/Datei). Schon bei 500.000 Dateien ist das Limit von Access (3 GB) erreicht. Das und dazu der Faktor 2,5 im Speicherbadarf zwischen Verzeichnis --> DB macht die Sache so, wie sie sich jetzt darstellt, in der Praxis für mich uninteressant. Der Speicherbedarf geht praktisch linear mit der Zahl der Sätze hoch, so daß ein Overhrad für Verwaltungs- und Optimierungszwecke keine große Rolle zu spielen scheint. Der Einfluß von Indizes ist ebenfalls sehr klein. Der Platz wird wohl zur Ablage des Textfeldes gebraucht.
Wieso nimmst du nicht gleich eine richtige Datenbank wie z.B. Firebird? Da ist die Größe der Datenbank nur durch den vorhandenen Plattenplatz begrenzt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz