Für die MySql Version 8.0.
Speicheranforderungen für numerische Typen
Data Type Storage Required
TINYINT 1 byte
SMALLINT 2 bytes
MEDIUMINT 3 bytes
INT, INTEGER 4 bytes
BIGINT 8 bytes
FLOAT(p) 4 bytes if 0 <= p <= 24, 8 bytes if 25 <= p <= 53
FLOAT 4 bytes
DOUBLE, REAL 8 bytes
DECIMAL(M,D), NUMERIC(M,D) Varies; see following discussion
BIT(M) approximately (M+7)/8 bytes
Werte für DECIMAL- (und NUMERIC-) Spalten werden in einem Binärformat dargestellt, das neun Dezimalstellen (Basis 10) in vier Bytes packt. Die Speicherung für die ganzzahligen und gebrochenen Teile jedes Werts wird separat bestimmt. Jedes Vielfache von neun Ziffern erfordert vier Bytes, und die "verbleibenden" Ziffern erfordern einen Bruchteil von vier Bytes. Der für überschüssige Ziffern erforderliche Speicher ist in der folgenden Tabelle angegeben.
Speicheranforderungen für Datums- und Uhrzeittyp Für die Spalten TIME, DATETIME und TIMESTAMP unterscheidet sich der für Tabellen, die vor MySQL 5.6.4 erstellt wurden, erforderliche Speicher von den ab 5.6.4 erstellten Tabellen. Dies ist auf eine Änderung in 5.6.4 zurückzuführen, die es diesen Typen ermöglicht, einen Bruchteil zu haben, der 0 bis 3 Bytes erfordert.
Data Type Storage Required Before MySQL 5.6.4 Storage Required as of MySQL 5.6.4
YEAR 1 byte 1 byte
DATE 3 bytes 3 bytes
TIME 3 bytes 3 bytes + fractional seconds storage
DATETIME 8 bytes 5 bytes + fractional seconds storage
TIMESTAMP 4 bytes 4 bytes + fractional seconds storage
Ab MySQL 5.6.4 bleibt der Speicher für YEAR und DATE unverändert. TIME, DATETIME und TIMESTAMP werden jedoch unterschiedlich dargestellt. DATETIME wird effizienter gepackt und benötigt 5 statt 8 Bytes für den nicht gebrochenen Teil, und alle drei Teile haben einen Bruchteil, der 0 bis 3 Bytes erfordert, abhängig von der Sekundenbruchteilgenauigkeit der gespeicherten Werte.
Fractional Seconds Precision Storage Required
0 0 bytes
1, 2 1 byte
3, 4 2 bytes
5, 6 3 bytes
Beispielsweise verwenden TIME (0), TIME (2), TIME (4) und TIME (6) jeweils 3, 4, 5 und 6 Bytes. TIME und TIME (0) sind äquivalent und erfordern denselben Speicher.
Ausführliche Informationen zur internen Darstellung von Zeitwerten finden Sie unter MySQL-Interna: Wichtige Algorithmen und Strukturen.
Speicheranforderungen für Zeichenfolgentypen In der folgenden Tabelle gibt M die deklarierte Spaltenlänge in Zeichen für nicht-binäre Zeichenfolgentypen und Bytes für binäre Zeichenfolgentypen an. L repräsentiert die tatsächliche Länge eines gegebenen Zeichenfolgenwerts in Bytes.
Data Type Storage Required
CHAR(M) The compact family of InnoDB row formats optimize storage for variable-length character sets. See COMPACT Row Format Characteristics. Otherwise, M × w bytes, <= M <= 255, where w is the number of bytes required for the maximum-length character in the character set.
BINARY(M) M bytes, 0 <= M <= 255
VARCHAR(M), VARBINARY(M) L + 1 bytes if column values require 0 − 255 bytes, L + 2 bytes if values may require more than 255 bytes
TINYBLOB, TINYTEXT L + 1 bytes, where L < 28
BLOB, TEXT L + 2 bytes, where L < 216
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 224
LONGBLOB, LONGTEXT L + 4 bytes, where L < 232
ENUM('value1','value2',...) 1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum)
SET('value1','value2',...) 1, 2, 3, 4, or 8 bytes, depending on the number of set members (64 members maximum)