Spec-Zone.ru › MySQL 9.2

10.4.6 Пределы размера таблиц

Эффективный максимальный размер таблицы для баз данных MySQL обычно определяется ограничениями операционной системы на размер файлов, а не внутренними ограничениями MySQL. Для получения актуальной информации об ограничениях размера файлов операционной системы обратитесь к документации вашей операционной системы.

Пользователям Windows, пожалуйста, обратите внимание, что FAT и VFAT (FAT32) не считаются подходящими для использования в производственной среде с MySQL. Используйте NTFS вместо них.

Если вы столкнулись с ошибкой заполнения таблицы, есть несколько причин, по которым это могло произойти:

  • Диск может быть заполнен.

  • Вы используете InnoDB таблицы и закончилось место в файле пространства таблиц InnoDB. Максимальный размер пространства таблиц также является максимальным размером таблицы. Ограничения размера пространства таблиц см. в разделе 17.21, «InnoDB Limits».

    В целом, рекомендуется разделение таблиц на несколько файлов пространства таблиц для таблиц размером более 1 ТБ.

  • Вы достигли ограничения размера файла операционной системы. Например, вы используете MyISAM таблицы на операционной системе, поддерживающей файлы размером только до 2 ГБ, и вы достигли этого предела для файла данных или файла индекса.

  • Вы используете MyISAM таблицу, и требуемое для неё пространство превышает разрешённый размер внутреннего указателя. MyISAM по умолчанию позволяет файлам данных и индексов расти до 256 ТБ, но это ограничение можно изменить до максимального разрешенного размера 65 536 ТБ (2567 − 1 байт).

    Если вам нужна MyISAM таблица, размер которой превышает значение по умолчанию, а ваша операционная система поддерживает большие файлы, то оператор CREATE TABLE поддерживает опции AVG_ROW_LENGTH и MAX_ROWS. См. раздел 15.1.21, «CREATE TABLE Statement». Сервер использует эти опции для определения допустимого размера таблицы.

    Если размер указателя слишком мал для существующей таблицы, вы можете изменить опции с помощью ALTER TABLE, чтобы увеличить максимальный допустимый размер таблицы. См. раздел 15.1.9, «ALTER TABLE Statement».

    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 Table Storage Formats».

    Вы можете проверить максимальные размеры данных и индексов с помощью следующего оператора:

    SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
    

    Вы также можете использовать myisamchk -dv /path/to/table-index-file. См. раздел 15.7.7, «SHOW Statements», или раздел 6.6.4, «myisamchk — MyISAM Table-Maintenance Utility».

    Другие способы решения ограничений размера файлов для MyISAM таблиц следующие:

    • Если ваша большая таблица только для чтения, вы можете использовать myisampack для её сжатия. myisampack обычно сжимает таблицу как минимум на 50%, поэтому вы можете иметь, по сути, гораздо более крупные таблицы. myisampack также может объединить несколько таблиц в одну. См. раздел 6.6.6, «myisampack — Generate Compressed, Read-Only MyISAM Tables».

    • MySQL включает библиотеку MERGE, которая позволяет обрабатывать набор MyISAM таблиц с одинаковой структурой как одну MERGE таблицу. См. раздел 18.7, «MERGE Storage Engine».

  • Вы используете MEMORY (HEAP) движок хранения; в этом случае вам нужно увеличить значение системной переменной max_heap_table_size. См. раздел 7.1.8, «Server System Variables».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/table-size-limit.html

Spec-Zone.ru

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