8.4.6 Пределы размера таблиц
Эффективный максимальный размер таблицы в базах данных MySQL обычно определяется ограничениями операционной системы на размер файлов, а не внутренними ограничениями MySQL. Для получения актуальной информации об ограничениях размера файлов операционной системы обратитесь к документации, специфичной для вашей операционной системы.
Пользователи Windows, обратите внимание, что FAT и VFAT (FAT32) не считаются подходящими для использования в производстве с MySQL. Используйте NTFS вместо них.
Если вы столкнулись с ошибкой заполнения таблицы, есть несколько причин, по которым она могла произойти:
Диск может быть заполнен.
-
Вы используете
InnoDBтаблицы и исчерпали место в файле пространстваInnoDBтаблиц. Максимальный размер пространства таблиц также является максимальным размером таблицы. Ограничения размера пространства таблиц см. в разделе 14.23, «Ограничения InnoDB».В целом, рекомендуется разбиение таблиц на несколько файлов пространства таблиц для таблиц размером более 1 ТБ.
Вы достигли ограничения размера файла операционной системы. Например, вы используете
MyISAMтаблицы на операционной системе, которая поддерживает файлы только до 2 ГБ, и вы достигли этого предела для файла данных или файла индекса.-
Вы используете
MyISAMтаблицу, и требуемое для таблицы пространство превышает разрешенный размер внутреннего указателя.MyISAMпозволяет файлам данных и индексов расти до 256 ТБ по умолчанию, но это ограничение можно изменить до максимального разрешенного размера 65 536 ТБ (2567 − 1 байт).Если вам нужна
MyISAMтаблица, размер которой превышает значение по умолчанию, и ваша операционная система поддерживает большие файлы, в инструкцииCREATE TABLEподдерживаются параметрыAVG_ROW_LENGTHиMAX_ROWS. См. раздел 13.1.18, «Инструкция CREATE TABLE». Сервер использует эти параметры для определения допустимого размера таблицы.Если размер указателя недостаточен для существующей таблицы, вы можете изменить параметры с помощью
ALTER TABLEдля увеличения максимального допустимого размера таблицы. См. раздел 13.1.8, «Инструкция ALTER TABLE».ALTER TABLE
tbl_nameMAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;Вы должны указать
AVG_ROW_LENGTHтолько для таблиц сBLOBилиTEXTстолбцами; в этом случае MySQL не может оптимизировать требуемое пространство, основываясь только на количестве строк.Чтобы изменить значение по умолчанию для ограничения размера
MyISAMтаблиц, установитеmyisam_data_pointer_size, которое устанавливает количество байтов, используемых для внутренних указателей строк. Это значение используется для установки размера указателя для новых таблиц, если вы не укажете параметрMAX_ROWS. Значениеmyisam_data_pointer_sizeможет быть от 2 до 7. Например, для таблиц, использующих динамический формат хранения, значение 4 позволяет создавать таблицы размером до 4 ГБ; значение 6 — до 256 ТБ. Таблицы, использующие фиксированный формат хранения, имеют больший максимальный размер данных. Характеристики форматов хранения см. в разделе 15.2.3, «Форматы хранения таблиц MyISAM».Вы можете проверить максимальные размеры данных и индексов, используя эту инструкцию:
SHOW TABLE STATUS FROM
db_nameLIKE 'tbl_name';Также можно использовать myisamchk -dv /path/to/table-index-file. См. раздел 13.7.5, «Инструкции SHOW» или раздел 4.6.3, «myisamchk — Утилита обслуживания таблиц MyISAM».
Другие способы решения проблем с ограничениями размера файлов для
MyISAMтаблиц:Если ваша большая таблица только для чтения, вы можете использовать myisampack для ее сжатия. myisampack обычно сжимает таблицу как минимум на 50%, что позволяет, фактически, иметь гораздо большие таблицы. myisampack также может объединять несколько таблиц в одну таблицу. См. раздел 4.6.5, «myisampack — Генерация сжатых, только для чтения таблиц MyISAM».
MySQL включает библиотеку
MERGE, которая позволяет обрабатывать наборMyISAMтаблиц с идентичной структурой как однуMERGEтаблицу. См. раздел 15.7, «Двигатель хранения MERGE».
Вы используете
MEMORY(HEAP) движок хранения; в этом случае вам необходимо увеличить значение системной переменнойmax_heap_table_size. См. раздел 5.1.7, «Системные переменные сервера».
© 2025 Oracle
Licensed under the GPLv2 License.