Spec-Zone.ru › MySQL 8.4

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_name MAX_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_name LIKE '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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/table-size-limit.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API