В табл. 6.1 указаны размерности стандартных типов данных MySQL. Значения некоторых типов всегда занимают фиксированный объем памяти. Например, размерность столбцов типа INTEGER всегда составляет 4 байта. Столбцы типа CHAR могут иметь размерность от 0 до 255, но в момент создания таблицы под них отводится фиксированный объем памяти. Существуют также столбцы переменной размерности. Например, столбцы типа VARCHAR и BLOB интерпретируются в соответствии с их содержимым.
Таблица 6.1. Размерности стандартных типов данных.
Тип
Размерность
BIGINT
8 байтов
BLOB, TEXT
длина содержимого + 2 байта
CHAR
указанное число байтов
DATE
3 байта
DATETIME
8 байтов
DECIMAL (длина, точность)
длина + 1 байт, если точность равна 0; в противном случае — длина + 2 байта
DOUBLE
8 байтов
DOUBLE PRECISION
8 байтов
ENUM
1 байт, если в перечислении менее 255 элементов; в противном случае — 2 байта
FLOAT
4 байта
FLOAT (длина)
4 байта, если длина <= 24; в противном случае — 8 байтов
INT
4 байта
INTEGER
4 байта
LONGBLOB, LONGTEXT
длина + 2 байта
MEDIUMBLOB, MEDIUMTEXT
длина + 2 байта
MEDIUMINT
3 байта
NUMERIC (длина, точность)
длина + 1 байт, если точность равна 0; в противном случае – длина + 2 байта
REAL
8 байтов
SET
1, 2, 3, 4 или 8 байтов, в зависимости от количества элементов множества
SMALLINT
2 байта
TIME
3 байта
TIMESTAMP
4 байта
TINYBLOB, TINYTEXT
длина + 2 байта
TINYINT
1 байт
VARCHAR (длина)
длина содержимого + 1 байт
YEAR
1 байт
Как указывалось выше, таблицы MYISAM содержат записи фиксированной либо переменной длины. Переход во второй режим осуществляется при наличии столбцов переменной размерности.
Значения столбцов типа DECIMAL и NUMERIC хранятся в строковом виде, что позволяет обеспечить точность представления десятичных чисел. Каждой цифре соответствует один символ, еще по одному символу отводится на знаковый разряд и десятичную точку.