1.4.4 Насколько большими могут быть таблицы в MySQL?
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 section 4.5.6 Синтаксис команды SHOW
.
Если необходимы таблицы большего размера, чем 4 Гб (и используемая
операционная система ``не возражает''), следует при создании такой таблицы
задать параметры AVG_ROW_LENGTH
и MAX_ROWS
(see section 6.5.3 Синтаксис оператора CREATE TABLE
). Эти параметры можно задать и позже - с помощью ALTER TABLE
(see section 6.5.4 Синтаксис оператора ALTER TABLE
).
Если большая таблица предназначена только для чтения, можно
воспользоваться myisampack
, чтобы слить несколько таблиц в одну и сжать
ее. Обычно myisampack
ужимает таблицу по крайней мере на 50%, поэтому в
результате можно получить очень большие таблицы (see section 4.7.4 myisampack
, MySQL-генератор сжатых таблиц (только для чтения)).
Есть еще одна возможность обойти ограничения операционной системы на
размеры файлов данных MyISAM, - это делается при помощи опции RAID
(see section 6.5.3 Синтаксис оператора CREATE TABLE
).
Еще одним решением может быть использование функции MERGE
, которая
обеспечивает возможность обрабатывать набор идентичных таблиц как одну
таблицу (see section 7.2 Таблицы MERGE).