Для версії MySql 8.0.
Вимоги до зберігання цифрового типу
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
Значення стовпців DECIMAL (і NUMERIC) представлені у двійковому форматі, який пакує дев'ять десяткових (базових 10) цифр у чотири байти. Зберігання цілої та дробової частин кожного значення визначається окремо. Кожна кратна з дев'яти цифр потребує чотирьох байтів, а для "залишків" цифр потрібна частина чотирьох байтів. Зберігання, необхідне для надмірних цифр, наведено в наступній таблиці.
Вимоги збереження дати та часу для стовпців TIME, DATETIME та TIMESTAMP, необхідне для зберігання таблиць, створених до MySQL 5.6.4, відрізняється від таблиць, створених від 5.6.4. Це пов'язано зі зміною 5.6.4, яка дозволяє цим типам мати дробову частину, для чого потрібно від 0 до 3 байт.
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
За станом на MySQL 5.6.4, зберігання для YEAR та DATE залишається незмінним. Однак TIME, DATETIME і TIMESTAMP представлені по-різному. DATETIME пакується більш ефективно, вимагаючи 5, а не 8 байт для нефракційної частини, і всі три частини мають дробову частину, що вимагає від 0 до 3 байт, залежно від точності дробів, що зберігаються.
Fractional Seconds Precision Storage Required
0 0 bytes
1, 2 1 byte
3, 4 2 bytes
5, 6 3 bytes
Наприклад, TIME (0), TIME (2), TIME (4) та TIME (6) використовують 3, 4, 5 та 6 байт відповідно. TIME і TIME (0) еквівалентні і потребують однакового сховища.
Докладніше про внутрішнє подання тимчасових значень див. У внутрішніх службах MySQL: Важливі алгоритми та структури.
Вимоги зберігання рядкових типів У наступній таблиці M представляє оголошену довжину стовпців у символах для небінарних типів рядків та байтів для типів бінарних рядків. L представляє фактичну довжину в байтах заданого значення рядка.
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)