Archiv verlassen und diese Seite im Standarddesign anzeigen : Wieviel speicher wird reserviert
Hallo,
ich versuche gerade zu berechenen wieviel Speicher bei verschieden Spasltentypen reserviert werden. Doch komme ich irgendwie nicht weit. Ich habe immer das gefühl ein denkfahler zu haben. Kann mir einer bitte da unter die Arme greifen..
Beispiel:
VARCHAR(100) = ??? bits;
DATE = ??? bits;
INT(5) = ??? bits;
CHAR(2) = ??? bits;
BIGINT = ???;Wie wird sowas erechtnet..?
Gruß st0n3
imported_MMB
04.02.2004, 20:56
Das kannst du errechen, indem du die Maxiamle Größe kennst.
ZB: BigInt hat afair 4Bytes. Die Strings werden im afaik im ASCII format gespeichert, dh 2 Bytes pro Buchstabe. Das selbe gilt für den Char. Hast du in der Mysql-Dokumentation mal geguckt?
Original von MMB
Hast du in der Mysql-Dokumentation mal geguckt?
Ja hab ich. Bin leider nur noch mehr durcheinander gekommen...
Ein ASCII Buchstabe hat doch 1 byte order nicht? 2^8 = 256 mögliche Zeichen; 8bit = 1byte. Wenn das so ist dann bedeutet daß das bei VARHCAR(100) = 100bytes = 800bits reseviert werden. Sehe ich das richtig.
Gruß st0n3
Original von st0n3
Ein ASCII Buchstabe hat doch 1 byte order nicht?
Ja, aber die DB speichert genaugenommen kein ASCII ab sondern verwendet entsprechende Charsets. Es gibt weltweit mehr als 256 Buchstaben (denk an chinesisch).
PHP könnte das auch, wenn es mit Multibyte compoliert wurde.
Original von meikel
Ja, aber die DB speichert genaugenommen kein ASCII ab sondern verwendet entsprechende Charsets. Es gibt weltweit mehr als 256 Buchstaben (denk an chinesisch).
Das bedeutet ja das man bei VARCHAR/CHAR mit 16bit pro Zeichen rechnen/ausgehen muss. Was ist aber mit INTEGERs order DATE? Von wieviel sollte man da ausgehen bzw. wie kann man das berechenen?
Original von meikel
PHP könnte das auch, wenn es mit Multibyte compoliert wurde. Würde gern mal ein Quellcode in chinesisch sehen ;)
gruß st0n3
Original von st0n3
Das bedeutet ja das man bei VARCHAR/CHAR mit 16bit pro Zeichen rechnen/ausgehen muss. Was ist aber mit INTEGERs order DATE? Von wieviel sollte man da ausgehen bzw. wie kann man das berechenen?Das ist genaugenommen uninteressant, weil ein DBMS sowas "seitenweise" verwaltet. Dazu kommt noch, wie das OS die Festplatte verwaltet. Bei FAT verbraucht selbst die kleinste Datei 4 KB.
Wieviele Bytes MySQL bei jedem Datentyp verbrät, kannste dem Handbuch entnehmen. Ich weiß zumindest, daß der Datentyp SET und ENUM 8 Bytes benötig, weil Du ja max 64 Bits zur Verfügung hast.
Solltest Du nach einem Plan suchen, wie Du den Plattenverbrauch von Tabellen berechnen willst:
Sowas macht man effizient in der Shell.
echo shell_exec('/usr/bin/du -sh /var/lib/mysql/test'));
liefert als Ergebnis:
116k /var/lib/mysql/test
Das sagt mir: die DB Test verbrät 116 KB Platte.
Powered by vBulletin® Version 4.1.5 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.