Die Speicheranforderungen der einzelnen von MySQL unterstützten Datentypen sind nachfolgend nach Kategorie sortiert aufgelistet.
Die maximale Größe eines Datensatzes in einer
MyISAM
-Tabelle beträgt 65.534 Byte. Jede
BLOB
- oder TEXT
-Spalte
trägt nur zwischen 5 und 9 Byte zu dieser Größe bei.
Speicheranforderungen für numerische Typen
Datentyp | Erforderlicher Speicherplatz |
TINYINT |
1 Byte |
SMALLINT |
2 Byte |
MEDIUMINT |
3 Byte |
INT , INTEGER
|
4 Byte |
BIGINT |
8 Byte |
FLOAT( |
4 Byte, sofern 0 <= p <= 24; 8 Byte,
sofern 25 <= p <= 53 |
FLOAT |
4 Byte |
DOUBLE [PRECISION] , REAL
|
8 Byte |
DECIMAL( ,
NUMERIC(
|
Variiert (siehe nachfolgende Beschreibung) |
BIT( |
ca. (M +7) ÷ 8 Byte |
Werte für DECIMAL
-Spalten (und auch für
NUMERIC
-Spalten) werden in einem Binärformat
dargestellt, das 9 Dezimalstellen (Basis 10) mit 4 Byte
repräsentiert. Die Speicheranforderungen für ganzzahlige und
Bruchteile eines Werts werden separat bestimmt. Jedes Vielfache
von 9 Stellen erfordert 4 Byte, und die „restlichen“
Stellen erfordern einen Bruchteil von 4 Byte. Der für
überzählige Stellen erforderliche Speicherplatz ist in der
folgenden Tabelle angegeben:
Überzählige Stellen | Anzahl Bytes |
0 | 0 |
1 | 1 |
2 | 1 |
3 | 2 |
4 | 2 |
5 | 3 |
6 | 3 |
7 | 4 |
8 | 4 |
9 | 4 |
Speicheranforderungen für Datums- und Uhrzeittypen
Datentyp | Erforderlicher Speicherplatz |
DATE |
3 Byte |
DATETIME |
8 Byte |
TIMESTAMP |
4 Byte |
TIME |
3 Byte |
YEAR |
1 Byte |
Speicheranforderungen für String-Typen
Datentyp | Erforderlicher Speicherplatz |
CHAR( |
Bytes, 0 <=
255 |
VARCHAR( |
L + 1 Byte, wobei
und 0
<= 255 (siehe nachfolgender Hinweis)
or L + 2
Byte, wobei und 256
<= 65535 (siehe nachfolgender Hinweis) |
BINARY( |
Bytes, 0 <=
255 |
VARBINARY( |
L + 1 Byte, wobei
und 0
<= 255 (siehe nachfolgender Hinweis)
or L + 2
Byte, wobei und 256
<= 65535 (siehe nachfolgender Hinweis) |
TINYBLOB , TINYTEXT
|
L +1 Byte, wobei L
< 28
|
BLOB , TEXT
|
L +2 Byte, wobei L
< 216
|
MEDIUMBLOB , MEDIUMTEXT
|
L +3 Byte, wobei L
< 224
|
LONGBLOB , LONGTEXT
|
L +4 Byte, wobei L
< 232
|
ENUM(' |
1 oder 2 Byte, abhängig von der Anzahl der Auflistungswerte (maximal 65.535) |
SET(' |
1, 2, 3, 4 oder 8 Byte, abhängig von der Anzahl der Mitglieder der Menge (maximal 64) |
Bei den Typen CHAR
, VARCHAR
und TEXT
sollten die Werte
L
und M
in
obiger Tabelle als Anzahl der Zeichen aufgefasst werden. Längen
für diese Typen in der Spaltendefinition geben die Anzahl der
Zeichen an. Um beispielsweise einen
TINYTEXT
-Wert zu speichern, benötigen Sie
L
Zeichen plus 1 Byte.
VARCHAR
und die VARBINARY
-
und BLOB
- und TEXT
-Typen
haben jeweils variable Längen. Bei ihnen hängen die
Speicheranforderungen von den folgenden Faktoren ab:
der tatsächlichen Länge des Spaltenwerts
der maximal zulässigen Länge der Spalte
dem für die Spalte verwendeten Zeichensatz
Eine VARCHAR(10)
-Spalte beispielsweise kann
einen String mit einer maximalen Länge von 10 aufnehmen. Wenn man
voraussetzt, dass die Spalte den Zeichensatz
latin1
verwendet (bei dem jedes Zeichen durch 1
Byte dargestellt wird), dann entspricht die tatsächliche
Speicheranforderung der Länge des Strings
(L
) zuzüglich eines Bytes zur Angabe
der String-Länge. Beim String 'abcd'
ist
L
4, und der Speicherbedarf beträgt 5
Byte. Wenn dieselbe Spalte stattdessen als
VARCHAR(500)
deklariert würde, dann benötigte
der String 'abcd'
4 + 2 = 6 Bytes. Es
werden 2 Byte (statt nur eines) für das Präfix benötigt, da die
Länge der Spalte größer als 255 Zeichen ist.
Um die Anzahl der Bytes zu berechnen, die zur
Speicherung eines bestimmten CHAR
-,
VARCHAR
- oder
TEXT
-Spaltenwerts benötigt werden, müssen Sie
den Zeichensatz der betreffenden Spalte in Betracht ziehen. Dies
gilt insbesondere bei Verwendung des
utf8
-Unicode-Zeichensatzes: Hierbei ist darauf
zu achten, dass nicht alle utf8
-Zeichen
dieselbe Anzahl Bytes verwenden. Eine Auflistung der
Speicheranforderungen verschiedener Kategorien von
utf8
-Zeichen finden Sie in
Abschnitt 10.7, „Unicode-Unterstützung“.
Hinweis: Die
effektive Maximallänge einer
VARCHAR
- oder
VARBINARY
-Spalte beträgt 65.532.
Die NDBCLUSTER
-Speicher-Engine in MySQL 5.1
unterstützt echte Spalten variabler Breite. Das bedeutet, dass
eine VARCHAR
-Spalte in einer
MySQL-Cluster-Tabelle dieselbe Menge Speicher benötigt, die sie
bei Verwendung einer beliebigen anderen Speicher-Engine erfordern
würde. Dieses Verhalten unterscheidet sich von dem früherer
Versionen von NDBCLUSTER
.
Die Typen BLOB
und TEXT
erfordern je nach maximal möglicher Länge des Datentyps 1 bis 4
Byte zur Aufnahme des Spaltenwerts. Siehe auch
Abschnitt 11.4.3, „Die Spaltentypen BLOB
und TEXT
“.
TEXT
- und BLOB
-Spalten sind
in der NDBCLUSTER
-Speicher-Engine
unterschiedlich implementiert. Dabei besteht jeder Datensatz in
einer TEXT
-Spalte aus zwei separaten Teilen.
Der eine Teil hat eine feste Größe von 256 Byte und wird
tatsächlich in der Ursprungstabelle gespeichert. Der andere
besteht aus den Daten, die den Umfang von 256 Byte überschreiten.
Diese werden in einer verborgenen Tabelle gespeichert. Die
Datensätze in dieser zweiten Tabelle sind immer 2.000 Byte lang.
Das bedeutet, dass die Größe einer
TEXT
-Spalte 256 beträgt, wenn
size
<= 256 (wobei
size
die Größe des Datensatzes
darstellt); andernfalls beträgt die Größe 256 +
size
+ (2000 –
(size
– 256) % 2000).
Die Größe eines ENUM
-Objekts wird anhand der
Anzahl verschiedener Auflistungswerte bestimmt. Ein Byte wird für
Auflistungen mit bis zu 255 möglichen Werten benötigt. 2 Byte
sind für Auflistungen erforderlich, die zwischen 256 und 65.535
mögliche Werte besitzen. Siehe auch Abschnitt 11.4.4, „Der Spaltentyp ENUM
“.
Die Größe eines SET
-Objekts wird anhand der
Anzahl verschiedener Mitglieder der Menge bestimmt. Wenn die
Größe der Menge N
ist, dann benötigt
das Objekt (
Byte, gerundet auf 1, 2, 3, 4 oder 8 Byte. Ein
N
+7)/8SET
kann maximal 64 Mitgliedswerte umfassen.
Siehe auch Abschnitt 11.4.5, „Der Spaltentyp SET
“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.