10.4.6 Пределы размера таблицы
Максимальный эффективный размер таблицы в базах данных MySQL обычно определяется ограничениями операционной системы на размер файлов, а не внутренними ограничениями MySQL. Для получения актуальной информации об ограничениях размера файлов операционной системы обратитесь к документации, соответствующей вашей операционной системе.
Пользователи Windows, обратите внимание, что FAT и VFAT (FAT32) не считаются подходящими для использования в производственной среде с MySQL. Используйте NTFS вместо них.
Если у вас возникла ошибка полной таблицы, есть несколько причин, по которым это могло произойти:
Диск может быть заполнен.
-
Вы используете
InnoDBтаблицы и закончилось место в файле табличного пространстваInnoDB. Максимальный размер табличного пространства также является максимальным размером таблицы. Ограничения размера табличного пространства см. в разделе 17.21, «Ограничения InnoDB».В целом, для таблиц размером более 1 ТБ рекомендуется разбиение таблиц на несколько файлов табличного пространства.
Вы достигли ограничения размера файла операционной системы. Например, вы используете
MyISAMтаблицы на операционной системе, которая поддерживает файлы только до 2 ГБ, и вы достигли этого предела для файла данных или файла индекса.-
Вы используете
MyISAMтаблицу, и необходимое пространство для таблицы превышает разрешённый размер внутреннего указателя.MyISAMпозволяет по умолчанию увеличивать размер файлов данных и индексов до 256 ТБ, но этот предел можно изменить до максимального допустимого размера 65 536 ТБ (2567 − 1 байт).Если вам нужна
MyISAMтаблица, размер которой превышает предел по умолчанию, и ваша операционная система поддерживает большие файлы, в оператореCREATE TABLEподдерживаются параметрыAVG_ROW_LENGTHиMAX_ROWS. См. раздел 15.1.20, «Оператор CREATE TABLE». Сервер использует эти параметры для определения допустимого размера таблицы.Если размер указателя слишком мал для существующей таблицы, вы можете изменить параметры с помощью
ALTER TABLEдля увеличения максимального допустимого размера таблицы. См. раздел 15.1.9, «Оператор 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 ТБ. Таблицы, использующие фиксированный формат хранения, имеют больший максимальный размер данных. Характеристики форматов хранения см. в разделе 18.2.3, «Форматы хранения таблиц MyISAM».Вы можете проверить максимальные размеры данных и индексов, используя этот оператор:
SHOW TABLE STATUS FROM
db_nameLIKE 'tbl_name';Вы также можете использовать myisamchk -dv /path/to/table-index-file. См. раздел 15.7.7, «Операторы SHOW» или раздел 6.6.4, «myisamchk — Утилита обслуживания таблиц MyISAM».
Другие способы решения ограничений размера файлов для
MyISAMтаблиц:Если ваша большая таблица только для чтения, вы можете использовать myisampack для её сжатия. myisampack обычно сжимает таблицу как минимум на 50%, поэтому вы можете получить значительно большие таблицы. myisampack также может объединить несколько таблиц в одну таблицу. См. раздел 6.6.6, «myisampack — Генерация сжатых таблиц MyISAM только для чтения».
MySQL включает библиотеку
MERGE, которая позволяет обрабатывать наборMyISAMтаблиц с одинаковой структурой как однуMERGEтаблицу. См. раздел 18.7, «Двигатель хранения MERGE».
Вы используете
MEMORY(HEAP) движок хранения; в этом случае вам нужно увеличить значение системной переменнойmax_heap_table_size. См. раздел 7.1.8, «Системные переменные сервера».
© 2025 Oracle
Licensed under the GPLv2 License.