Насколько большими могут быть таблицы в MySQL?
MySQL версии 3.22 имеет предел по размеру таблиц 4 Гб. В MySQL версии 3.23, где используется новый тип таблиц, максимальный размер таблицы доведен до 8 миллионов терабайтов (2 ^ 63 bytes).
Однако следует заметить, что операционные системы имеют свои собственные ограничения по размерам файлов. Ниже приведено несколько примеров:
Операционная система | Ограничения на размеры файла |
---|
2-разрядная 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. См. раздел Синтаксис команды SHOW.
Если необходимы таблицы большего размера, чем 4 Гб (и используемая операционная система "не возражает"), следует при создании такой таблицы задать параметры AVG_ROW_LENGTH и MAX_ROWS (см. раздел Синтаксис оператора CREATE TABLE). Эти параметры можно задать и позже - с помощью ALTER TABLE (см. раздел Синтаксис оператора ALTER TABLE).
Если большая таблица предназначена только для чтения, можно воспользоваться myisampack, чтобы слить несколько таблиц в одну и сжать ее. Обычно myisampack ужимает таблицу по крайней мере на 50%, поэтому в результате можно получить очень большие таблицы (см. раздел myisampack, MySQL-генератор сжатых таблиц (только для чтения)).
Есть еще одна возможность обойти ограничения операционной системы на размеры файлов данных MyISAM, - это делается при помощи опции RAID (см. раздел Синтаксис оператора CREATE TABLE).
Еще одним решением может быть использование функции MERGE, которая обеспечивает возможность обрабатывать набор идентичных таблиц как одну таблицу (см. раздел Таблицы MERGE). 1 2 3 4
8 8 8
| |