MySQL версии 3.22 имеет предел по размеру таблиц 4 Гб. В MySQL версии 3.23, где используется новый тип таблиц, максимальный размер таблицы доведен до 8 миллионов терабайтов (2 ^ 63 bytes).
Однако следует заметить, что операционные системы имеют свои собственные ограничения по размерам файлов. Ниже приведено несколько примеров:
Операционная система | Ограничения на размеры файла |
32-разрядная Linux-Intel | 2Гб, 4Гб и более, в зависимости от версии Linux |
Linux-Alpha | 8T (?) |
Solaris 2.5.1 | 2 Гб (с патчем возможно 4Гб) |
Solaris 2.6 | 4Гб (может быть изменено при помощи указания флага) |
Solaris 2.7 Intel | 4 Гб |
Solaris 2.7 UltraSPARC | 512 Гб |
В Linux 2.2 существует возможность создавать таблицы с размерами более 2 Гб, используя патч LFS для файловой системы ext2. Существуют также патчи, обеспечивающие поддержку больших файлов для ReiserFS в Linux 2.4.
Как можно видеть, размер таблицы в базе данных MySQL обычно лимитируется операционной системой.
По умолчанию MySQL-таблицы имеют максимальный размер около 4 Гб. Для любой
таблицы можно проверить/определить ее максимальный размер с помощью команд
SHOW TABLE STATUS
или myisamchk -dv table_name
. See Раздел 4.5.6, «Синтаксис команды SHOW
».
Если необходимы таблицы большего размера, чем 4 Гб (и используемая
операционная система ``не возражает''), следует при создании такой таблицы
задать параметры AVG_ROW_LENGTH
и MAX_ROWS
(see Раздел 6.5.3, «Синтаксис оператора CREATE TABLE
»). Эти параметры можно задать и позже - с помощью ALTER TABLE
(see Раздел 6.5.4, «Синтаксис оператора ALTER TABLE
»).
Если большая таблица предназначена только для чтения, можно
воспользоваться myisampack
, чтобы слить несколько таблиц в одну и сжать
ее. Обычно myisampack
ужимает таблицу по крайней мере на 50%, поэтому в
результате можно получить очень большие таблицы (see Раздел 4.7.4, «myisampack
, MySQL-генератор сжатых таблиц (только для чтения)»).
Есть еще одна возможность обойти ограничения операционной системы на
размеры файлов данных MyISAM, - это делается при помощи опции RAID
(see Раздел 6.5.3, «Синтаксис оператора CREATE TABLE
»).
Еще одним решением может быть использование функции MERGE
, которая
обеспечивает возможность обрабатывать набор идентичных таблиц как одну
таблицу (see Раздел 7.2, «Таблицы MERGE
»).