AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Kann ich herausfinden wie groß eine Memory-Datenbank ist?

Kann ich herausfinden wie groß eine Memory-Datenbank ist?

Ein Thema von Der schöne Günther · begonnen am 8. Jul 2016 · letzter Beitrag vom 5. Aug 2016
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#1

AW: Kann ich herausfinden wie groß eine Memory-Datenbank ist?

  Alt 27. Jul 2016, 10:12
Nein, kann ClientDataSet auch nicht vollständig.

Man kann (RecordSize * RecordCount) + (TBlobField().Size jedes einzelnen BlobFeldes) rechnen,
bzw. TField.DataSize + (if is TBlobField then add TBlobField().Size) jedes einzelnen Feldes.

Und dazu kommt dann noch jeweils der Offset der Speicherverwaltung.
siehe getmem.inc > SmallBlockTypes ... Standardmäßig: jeder kleine Speicherblock bis 2608 Bytes wird auf jene Größen aufgerundet,
Mittelgroße Blöcke bis 258KB werden auf 256 Bytes aufgerundet und große Blöcke auf 64KB (Verwaltungsgröße vom Windows)

Natürlich wäre es schöner, wenn Embarcadero eine virtuelle Property/Methode im TDataSet einführt, für "Speicherverbrauch", welches dann auch von FireDAC und Sonstigem entsprechend implementiert würde.
Oder zumindestens wenn die Memory-DataSets sowas hätten. (oder ganz geil gleich direkt in TObjekt, so daß man sowas standardisiert jeder Komponente fragen könnte ... bei TPersistent könnte man eventuell serialisieren und dessen Größe nehmen, aber das muß nicht mit dem RAM-Verbrauch übereinstimmen, wie z.B. gespeichert als ANSI/UTF-8 und im RAM als Unicode)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Jul 2016 um 10:16 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Kann ich herausfinden wie groß eine Memory-Datenbank ist?

  Alt 5. Aug 2016, 09:54
TPersistent könnte man eventuell serialisieren und dessen Größe nehmen
Das könnte man sicher auch irgendwie für ein TDataSet speziell machen, oder Dinge wie SaveToStream bei FireDac, aber das kann ja auch nur eine Notlösung sein: "Speichere mal bitte alles in einen Stream zu dem ich dann schaue wie groß er ist weil du mir nicht sagen willst wieviel es ist".

Ich glaube es ist Zeit für einen Eintrag im Quality Portal als FeatureRequest...
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:18 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-2025 by Thomas Breitkreuz