Frage

Wie MySQL speichert eine varchar Feld? Kann ich davon ausgehen, dass die folgenden Muster sinnvolle Speichergrößen repräsentieren:

1,2,4,8,16,32,64,128,255 (max)

Eine Klärung über Beispiel. Lets sagen, dass ich ein varchar Feld von 20 Zeichen lang sein. Ist MySQL, wenn dieses Feld zu schaffen, grundsätzlich Platz reserviert für 32 Bytes (nicht sicher, ob sie Bytes ist oder nicht), sondern nur gestatten 20 eingegeben werden?

Ich glaube, ich mache mir Sorgen um Speicherplatz für einen massiven Tisch zu optimieren.

War es hilfreich?

Lösung

Um die Frage zu beantworten, auf der Festplatte verwendet MySql 1 + die Größe, die auf dem Gebiet verwendet wird, um die Daten zu speichern (also wenn die Säule wurde varchar erklärt (45), und das Feld war „FooBar“ es 7 Byte verwenden würde, Sie, es sei denn natürlich auf der Festplatte, wo ein Mehrbyte-Zeichensatz verwenden, wo es 14 Bytes) verwendet werden würde. So, wie Sie Ihre Spalten deklarieren, wird es nicht einen Unterschied auf dem Speicher Ende machen (Sie erklären Sie sich Sorgen um die Datenträgeroptimierung für eine massive Tabelle). Allerdings hat es einen Unterschied in Abfragen machen, als VARCHAR die konvertiert wird die in CHAR wenn MySQL eine temporäre Tabelle (SORT, ORDER, usw.) macht und die weiteren Datensätze, die Sie in eine einzelne Seite passen, die weniger Speicher und schnelleren Scans Ihrer Tabelle wird sein.

Andere Tipps

MySQL speichert eine VARCHAR Feld als Datensatz variabler Länge, entweder mit einem Ein-Byte oder ein Zwei-Byte-Präfix der Datensatzgröße anzuzeigen.

ein Muster von Speichergrößen macht wirklich keinen Unterschied, wie MySQL funktionieren, wenn sie mit variabler Länge Rekordspeicher handelt. Die Länge in einer VARCHAR (x) bezeichnet einfach die maximale Länge der Daten bestimmen, die gespeichert werden können. Grundsätzlich ist ein varchar (16) ist das nicht anders scheiben weise als ein varchar (128).

Dieses Handbuch Seite hat eine ausführlichere Erklärung.

Edit: Im Hinblick auf die aktualisierte Frage, die Antwort ist immer noch die gleichen. Ein varchar Feld wird nur so viel Platz auf der Festplatte wie die Daten, die Sie in es (plus ein oder zwei Byte-Overhead) aufbrauchen. So spielt es keine Rolle, ob Sie eine varchar (16) oder eine varchar (128) haben, wenn Sie speichern einen 10-stellige Zeichenfolge in ihm, sind Sie nur 10 Bytes verwenden gehen (plus 1 oder 2) Speicherplatz .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top