Spec-Zone.ru › MySQL 5.7

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_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 ТБ. Таблицы, использующие фиксированный формат хранения, имеют больший максимальный размер данных. Характеристики форматов хранения см. в разделе 15.2.3, «Форматы хранения таблиц MyISAM».

    Вы можете проверить максимальные размеры данных и индексов, используя эту инструкцию:

    SHOW TABLE STATUS FROM db_name LIKE '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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/table-size-limit.html

Spec-Zone.ru

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