Поиск

Размеры таблиц MySQL

В MySQL 3.22 существовало ограничение в 4 Гбайт на размер таблиц. С применением механизма хранения MyISAM в MySQL 3.23 предельный размер таблиц вырос до 8

миллионов Тбайт (263 байт). На практике это означает, что максимальные размеры таблиц теперь определяются ограничениями, накладываемыми операционной системой на размеры файлов, а не внутренними ограничениями MySQL.

Механизм хранения таблиц InnoDB поддерживает таблицы InnoDB внутри табличных пространств, которые могут состоять из нескольких файлов. Это позволяет таблице превысить максимальный размер отдельного файла. Табличное пространство может включать неразмеченные дисковые разделы (находящиеся вне файловой системы ОС), что позволяет иметь чрезвычайно большие таблицы. Максимальный размер табличного пространства составляет 64 терабайта.

В табл.приведены некоторые примеры ограничений на размеры файлов, налагаемые операционными системами.

Ограничения на размеры файлов со стороны операционных систем


Операционная система Ограничение размера файла
Linux-Intel, 32-разрядная 2 Гбайт, при использовании файловой системы LFS значительно больше
Linux-Alpha 8 Тбайт (утверждается)
Solaris 2.5.1 2 Гбайт (4 Гбайт с обновлениями)
Solaris 2.6 4 Гбайт (может быть изменено с помощью флагов)
Solaris 2.7 Intel 4 Гбайт
Solans 2.7 UltraSPARC 512 Гбайт
NetWare с файловой системой NSS 8 Тбайт

В Linux 2.2 можно иметь таблицы MyISAM размером свыше 2 Гбайт, если воспользоваться обновлением LFS (Large Files Support - поддержка больших файлов) для файловой системы ext2. В Linux 2.4 существуют также обновления поддержки больших файлов для файловой системы ReiserFS. Большинство современных дистрибутивов Linux базируются на ядре 2.4 и уже оснащены всеми необходимыми обновлениями LFS. Однако максимально доступный размер файлов по-прежнему зависит от ряда факторов, один из которых - это тип файловой системы, используемой для хранения таблиц MySQL.

Детальный обзор LFS для Linux можно найти на странице Андреаса Джаегера (Andreas Jaeger) "Large File Support in Linux" ("Поддержка больших файлов в Linux") no адресу http://www.suse.de/~aj /linux_lfs.html.

По умолчанию MySQL создает таблицы MyISAM с внутренней структурой, разреша-щей максимальный размер таблицы в 4 Гбайт. Максимальный размер таблицы можно проверить с помощью команды SHOW TABLE STATUS или myisamchk -dv имя_таблицы.

Если необходимо работать с таблицами MyISAM размером свыше 4 Гбайт (и ваша операционная система поддерживает файлы упомянутого размера), на этот случай в операторе CREATE TABLE предусмотрены опции AVG_ROW_LENGTH и MAX_ROWS. Эти опции также можно изменить с помощью команды ALTER TABLE уже после создания таблицы, и таким образом увеличить ее максимально допустимый размер.

Ниже представлены другие способы преодоления ограничений на размер таблиц , налагаемых операционной системой.

Если большая таблица используется только для чтения, с помощью утилиты myisampack ее можно сжать. Как правило, эта утилита сжимает таблицу примерно

до 50% от начального размера. В результате можно иметь дело со значительно большими таблицами. Посредством утилиты myisampack можно также объединить несколько таблиц в одну.

  • Другой способ преодоления ограничений на размер файла операционной системы
    для таблиц MyI SAM заключается в использовании опции RAID.
  • MySQL включает в себя библиотеку MERGE, которая позволяет управлять набором
    таблиц MylSAM с идентичной структурой, как одной объединенной таблицей.