Đối với phiên bản MySql 8.0.
Yêu cầu lưu trữ kiểu số
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
Các giá trị cho các cột DECIMAL (và NUMERIC) được biểu diễn bằng định dạng nhị phân bao gồm chín chữ số thập phân (cơ sở 10) thành bốn byte. Lưu trữ cho các phần nguyên và phần của mỗi giá trị được xác định riêng. Mỗi bội số của chín chữ số yêu cầu bốn byte và các chữ số còn lại của kiểu chữ cái còn lại yêu cầu một số phần của bốn byte. Việc lưu trữ cần thiết cho các chữ số thừa được đưa ra bởi bảng sau.
Yêu cầu lưu trữ loại ngày và thời gian đối với các cột TIME, DATETIME và TIMESTAMP, lưu trữ cần thiết cho các bảng được tạo trước khi MySQL 5.6.4 khác với các bảng được tạo từ 5.6.4 trở đi. Điều này là do sự thay đổi trong 5.6.4 cho phép các loại này có một phần phân đoạn, yêu cầu từ 0 đến 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
Kể từ MySQL 5.6.4, dung lượng lưu trữ cho NĂM và NGÀY không thay đổi. Tuy nhiên, TIME, DATETIME và TIMESTAMP được thể hiện khác nhau. DATETIME được đóng gói hiệu quả hơn, yêu cầu 5 chứ không phải 8 byte cho phần không chiết xuất và cả ba phần đều có phần phân đoạn yêu cầu từ 0 đến 3 byte, tùy thuộc vào độ chính xác giây của các giá trị được lưu trữ.
Fractional Seconds Precision Storage Required
0 0 bytes
1, 2 1 byte
3, 4 2 bytes
5, 6 3 bytes
Ví dụ: TIME (0), TIME (2), TIME (4) và TIME (6) lần lượt sử dụng 3, 4, 5 và 6 byte. TIME và TIME (0) là tương đương và yêu cầu lưu trữ giống nhau.
Để biết chi tiết về biểu diễn bên trong của các giá trị tạm thời, hãy xem Nội bộ MySQL: Các thuật toán và cấu trúc quan trọng.
Yêu cầu lưu trữ kiểu chuỗi Trong bảng sau, M biểu thị độ dài cột được khai báo bằng ký tự cho loại chuỗi không nhị phân và byte cho loại chuỗi nhị phân. L đại diện cho độ dài thực tế tính bằng byte của một giá trị chuỗi đã cho.
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)