Simon: MySQL String Typen Speicherverbrauch?

Hallo,

ich habe jetzt noch eine Frage zum Speicherplatzverbrauch von String Typen in MySQL. Ich brauche eine Spalte für ca. 500 Zeichen, was nehme ich da am besten? TEXT? Wie siehts da mit dem Speicherverbrauch aus, wenn ich nicht die volle Zeichenlänge brauche? Ist der trotzdem immer gleich hoch?

  1. Hallo,

    ich habe jetzt noch eine Frage zum Speicherplatzverbrauch von String Typen in MySQL. Ich brauche eine Spalte für ca. 500 Zeichen, was nehme ich da am besten? TEXT? Wie siehts da mit dem Speicherverbrauch aus, wenn ich nicht die volle Zeichenlänge brauche? Ist der trotzdem immer gleich hoch?

    check mal this raus ;-)
    http://www.mysql.de/doc/de/Storage_requirements.html

    gruss

    --
    no strict;
    no warnings;
    Über eine Rückmeldung freut sich später jeder, der das gleiche Problem hat und im Archiv nach einer Lösung sucht.
    1. Das habe ich schon gesehen, aber soll das etwa heißen, nur weil ich 500 Zeichen speichern will, muss ich den Speicherbedarf einer TEXT/BLOB Spalte hinnehmen? CHAR/VARCHAR gehen ja nur bis 255 und dazwischen gibts nichts mehr.

      1. Hallo,

        Das habe ich schon gesehen, aber soll das etwa heißen, nur weil ich 500 Zeichen speichern will, muss ich den Speicherbedarf einer TEXT/BLOB Spalte hinnehmen? CHAR/VARCHAR gehen ja nur bis 255 und dazwischen gibts nichts mehr.

        was heisst hinnehmen?
        [quote]
        BLOB, TEXT   L+2 Bytes, wobei L < 2^16

        VARCHAR und die BLOB- und TEXT-Typen sind Typen variabler Länge[..]

        Der tatsächliche Speicherbedarf ist die Länge der Zeichenkette (L) plus 1 Byte,[..]

        [/quote]
        in dem fall also 500 bytes + 2 bytes. wo ist das problem?

        gruss

        --
        no strict;
        no warnings;
        Über eine Rückmeldung freut sich später jeder, der das gleiche Problem hat und im Archiv nach einer Lösung sucht.
        1. Ok,
          danke dir

      2. Hello,

        Das habe ich schon gesehen, aber soll das etwa heißen, nur weil ich 500 Zeichen speichern will, muss ich den Speicherbedarf einer TEXT/BLOB Spalte hinnehmen? CHAR/VARCHAR gehen ja nur bis 255 und dazwischen gibts nichts mehr.

        Die Text- und Blob-Typen nehmen in der Praxis nur den angegebenen Speicherplatz zuzüglich dem Platz für einen Schlüssel-/Offset-Wert in der "linken Tabelle" ein. Grob betrachtet, besteht eine Tabelle, die Text-Typen enthält aus der eigentlichen Tabelle sowie einer Tabelle für die  Textfelder [1]. Die Textfelder werden in "ihrer Tabelle" in Blöcken verwaltet. Wie die Quantisierung diesr Blöcke geregelt ist, weiß ich (noch) nicht. Vielleicht kann man sie sogar einstellen. Ich vermag auch nicht zu sagen, ob die Blöcke bei jedem Zugriff neu organisiert (aufgerückt, Lücken dazwischen entfernt...) werden.

        Könnte sein, dass das bei MySQL inzwischen etwas intelligenter geregelt ist, als damals beim guten alten dBase und seinen Memo-Feldern. Die mussten 1983 noch sehr viel Rücksicht auf die lahmen Systeme nehmen.

        Die beiden Tabellen werden in einer Datei geführt in "Seiten".

        Mach doch einfach mal einen Versuch zu dem Thema. Hast Du Zugriff auf die Dateien der DB? Füge einfach ein paar Datensätez mit Textfeldern hinz und schau dir die zur Tabelle gehörige *.MYD an, wie sie wächst. Dann lösch ein paar Datensätze und schau, was die Datei dann macht.

        Und vergiss nicht, das Ergebnis hier zu posten.

        Bei Char und VarChar werden immer M

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Nein, auf diese Dateien habe ich leider keinen Zugriff.

          Bei Char und VarChar werden immer M

          Was?

          PS: wo finde ich eigentlich diese Zitatzeichen auf der Tastatur?