MySQL char & varchar character sets & storage-Größen

Frage mich, wie viel tatsächlichen Speicher-Platz wird eingenommen durch diese zwei Datentypen, wie in der MySQL-Dokumentation ist etwas unklar in der Sache.

CHAR(M) M × w bytes, 0 <= M <= 255, wo w ist die Anzahl bytes, die
erforderlich für die maximale Länge Zeichen in den Zeichensatz

VARCHAR(M), VARBINARY(M) L + 1 bytes, wenn die Spalte Werte 0 – 255
bytes, L + 2 bytes, wenn Werte erfordern mehr als 255 bytes

Scheint dies zu implizieren mir, dass angesichts einer utf8-kodierten Datenbank, ein CHAR wird immer 32 bit pro Zeichen, während ein VARCHAR-zwischen 8 und 32 in Abhängigkeit von den tatsächlichen byte-Länge der Zeichen gespeichert. Ist das richtig? Oder hat einer von VARCHAR bedeuten, ein 8-bit-Zeichen Breite, und die Speicherung von multi-Byte-UTF8-Zeichen tatsächlich verbraucht mehrere 'Zeichen' aus dem VARCHAR? Oder ist das VARCHAR auch immer Speicher 32 bits pro Zeichen? So viele Möglichkeiten.

Nicht etwas, das ich jemals hatte, zu sorgen, so viel über, bevor, aber ich bin angefangen zu schlagen, in-memory-temp-Tabelle Größe begrenzt ist und ich nicht unbedingt haben wollen, zu erhöhen, MySQL verfügbaren pool (zum zweiten mal).

InformationsquelleAutor pospi | 2012-04-10
Schreibe einen Kommentar