Einzelnen Beitrag anzeigen

hstreicher

Registriert seit: 21. Nov 2009
220 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

AW: Firebird Datenbankgröße

  Alt 2. Mai 2014, 12:46
Hast Du mal nachgerechnet?
21 Mio Datensätze in 25% von 128MB Speicher sind irgendwie nicht ganz so viele Bytes pro Datensatz. Genauer gesagt: 1.6 Bytes.
Datenquelle:Technisches Gerät mit (angeblich) 128MB internem Speicher und 25% Belegung
Was wir hier haben sind ca. 23 Bytes reine Nutzdaten. Das ergibt dann schon mal in Summe 460 MB (21 Mio recs # 23 Bytes). Pro Index über einen 4-Byte-Integer kommen da dann noch
nur mal so :
128MB durch 21 Mio = 6 Bytes

der Index besteht auf 4 Byte Nutzdaten
Aufbau eines Index Records:

http://ibexpert.net/ibe/index.php?n=Doc.IndexB-treePage

struct btree_nod
{
UCHAR *nodePointer;
USHORT btn_prefix;
USHORT btn_length;
SLONG pageNumber;
UCHAR *data;
RecordNumber recordNumber;
bool isEndBucket;
bool isEndLevel;

1+2+2+4+4+4+1+1 = 19 Byte bei 4 Byte Nutzlast

sind dann 400 MB , dazu kommt dass die Indexe in Pages verwaltet werden die meist nicht ganz gefüllt werden
Plus Overhead um die Pages zu verwalten ,

2 Indizes laut dem anderen Thread also über 800MB

Record Header : (auch von der IBexpert seite)
struct rhd {
SLONG rhd_transaction;
SLONG rhd_b_page;
USHORT rhd_b_line;
USHORT rhd_flags;
UCHAR rhd_format;
UCHAR rhd_data[1];
};

4+4+2+2+1+ Nutzlast
36 Bytes bei 21 Mio Record 756 MB

Plus 800 MB Index


so dass das mit den 1.65 GB schon hinkommt

mfg Hannes
  Mit Zitat antworten Zitat