Untuk versi MySql 8.0.
Persyaratan Penyimpanan Tipe Numerik
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
Nilai untuk kolom DECIMAL (dan NUMERIC) direpresentasikan menggunakan format biner yang mengemas sembilan angka desimal (basis 10) menjadi empat byte. Penyimpanan untuk bagian bilangan bulat dan pecahan dari masing-masing nilai ditentukan secara terpisah. Setiap kelipatan sembilan digit membutuhkan empat byte, dan digit "sisa" memerlukan beberapa fraksi dari empat byte. Penyimpanan yang diperlukan untuk kelebihan digit diberikan oleh tabel berikut.
Persyaratan Penyimpanan Tipe Tanggal dan Waktu Untuk kolom TIME, DATETIME, dan TIMESTAMP, penyimpanan yang diperlukan untuk tabel yang dibuat sebelum MySQL 5.6.4 berbeda dari tabel yang dibuat dari 5.6.4 pada. Ini disebabkan oleh perubahan pada 5.6.4 yang memungkinkan tipe-tipe ini memiliki bagian fraksional, yang membutuhkan dari 0 hingga 3 byte.
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
Pada MySQL 5.6.4, penyimpanan untuk YEAR dan DATE tetap tidak berubah. Namun, TIME, DATETIME, dan TIMESTAMP terwakili secara berbeda. DATETIME dikemas lebih efisien, membutuhkan 5 daripada 8 byte untuk bagian yang tidak praktis, dan ketiga bagian memiliki bagian fraksional yang membutuhkan dari 0 hingga 3 byte, tergantung pada ketepatan detik fraksional dari nilai yang disimpan.
Fractional Seconds Precision Storage Required
0 0 bytes
1, 2 1 byte
3, 4 2 bytes
5, 6 3 bytes
Misalnya, TIME (0), TIME (2), TIME (4), dan TIME (6) masing-masing menggunakan 3, 4, 5, dan 6 byte. TIME dan TIME (0) sama dan membutuhkan penyimpanan yang sama.
Untuk detail tentang representasi internal nilai temporal, lihat MySQL Internal: Algoritma dan Struktur Penting.
Persyaratan Penyimpanan Tipe String Dalam tabel berikut, M menunjukkan panjang kolom yang dinyatakan dalam karakter untuk tipe string non-biner dan byte untuk tipe string biner. L mewakili panjang aktual dalam byte dari nilai string yang diberikan.
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)