17.6.3.2 Пространства имен таблиц с файлами на основе таблиц
Пространство имен таблиц с файлами на основе таблиц содержит данные и индексы для одной таблицы InnoDB и хранится в файловой системе в одном файле данных.
Характеристики пространств имен таблиц с файлами на основе таблиц описаны в следующих разделах этого раздела:
Настройка пространства имен таблиц с файлами на основе таблиц
InnoDB по умолчанию создает таблицы в пространствах имен таблиц с файлами на основе таблиц. Это поведение контролируется переменной innodb_file_per_table. Отключение innodb_file_per_table приводит к тому, что InnoDB создает таблицы в системном пространстве имен.
Значение innodb_file_per_table можно указать в файле опций или настроить во время выполнения с помощью оператора SET
GLOBAL. Изменение настроек во время выполнения требует привилегий, достаточных для изменения глобальных системных переменных. См. Раздел 7.1.9.1, «Привилегии системных переменных».
Файл опций:
[mysqld]
innodb_file_per_table=ON
Использование оператора SET
GLOBAL во время выполнения:
mysql> SET GLOBAL innodb_file_per_table=ON;
Файлы данных пространства имен таблиц с файлами на основе таблиц
Пространство имен таблиц с файлами на основе таблиц создается в файле данных .ibd в каталоге схемы в каталоге данных MySQL. Файл .ibd имеет имя, соответствующее таблице (). Например, файл данных для таблицы table_name.ibdtest.t1 создается в каталоге test в каталоге данных MySQL:
mysql> USE test;
mysql> CREATE TABLE t1 (
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(100)
-> ) ENGINE = InnoDB;
mysql> EXIT;
$> cd /path/to/mysql/data/test
$> ls
t1.ibd
Вы можете использовать клаузу DATA DIRECTORY оператора CREATE TABLE, чтобы неявно создать файл данных пространства имен таблиц с файлами на основе таблиц вне каталога данных. Для получения дополнительной информации см. Раздел 17.6.1.2, «Создание таблиц внешним образом».
Преимущества пространств имен таблиц с файлами на основе таблиц
Пространства имен таблиц с файлами на основе таблиц обладают следующими преимуществами по сравнению с общими пространствами имен, такими как системное пространство имен или общие пространства имен:
После усечения или удаления таблицы, созданной в пространстве имен таблиц с файлами на основе таблиц, дисковое пространство возвращается операционной системе. При усечении или удалении таблицы, хранящейся в общем пространстве имен, освобождается место в файле данных общего пространства имен, которое может быть использовано только для данных
InnoDB. Другими словами, файл данных общего пространства имен не уменьшается в размерах после усечения или удаления таблицы.Операция копирования таблицы
ALTER TABLEдля таблицы, которая находится в общем пространстве имен, может увеличить объем дискового пространства, занимаемого пространством имен. Для таких операций может потребоваться столько же дополнительного пространства, сколько данных в таблице плюс индексы. Это пространство не возвращается операционной системе, как в случае с пространствами имен таблиц с файлами на основе таблиц.Производительность оператора
TRUNCATE TABLEлучше при выполнении для таблиц, находящихся в пространствах имен таблиц с файлами на основе таблиц.Файлы данных пространства имен таблиц с файлами на основе таблиц можно создавать на отдельных накопителях для оптимизации ввода-вывода, управления пространством или целей резервного копирования. См. Раздел 17.6.1.2, «Создание таблиц внешним образом».
Вы можете импортировать таблицу, находящуюся в пространстве имен таблиц с файлами на основе таблиц, из другого экземпляра MySQL. См. Раздел 17.6.1.3, «Импорт таблиц InnoDB».
Таблицы, созданные в пространствах имен таблиц с файлами на основе таблиц, поддерживают функции, связанные с форматами строк
DYNAMICиCOMPRESSED, которые не поддерживаются системным пространством имен. См. Раздел 17.10, «Форматы строк InnoDB».Таблицы, хранящиеся в отдельных файлах пространства имен, могут экономить время и повысить вероятность успешного восстановления при повреждении данных, отсутствии резервных копий или журналов двоичных логов или невозможности перезапуска экземпляра MySQL.
Таблицы, созданные в пространствах имен таблиц с файлами на основе таблиц, могут быть быстро резервными копией или восстановлены с помощью MySQL Enterprise Backup без прерывания использования других
InnoDBтаблиц. Это полезно для таблиц с различными расписаниями резервного копирования или для таблиц, которые требуют резервного копирования реже. См. для получения подробностей.Пространства имен таблиц с файлами на основе таблиц позволяют отслеживать размер таблицы в файловой системе, отслеживая размер файла данных пространства имен.
Общие файловые системы Linux не позволяют одновременные записи в один файл, такой как файл данных общего пространства имен, когда
innodb_flush_methodустановлен в значениеO_DIRECT. В результате, при использовании пространств имен таблиц с файлами на основе таблиц в сочетании с этим параметром могут быть возможны улучшения производительности.Размер таблиц в общем пространстве имен ограничен пределом размера пространства имен в 64 ТБ. В отличие от этого, каждое пространство имен таблиц с файлами на основе таблиц имеет предел размера в 64 ТБ, что обеспечивает достаточно места для увеличения размера отдельных таблиц.
Недостатки пространств имен таблиц с файлами на основе таблиц
Пространства имен таблиц с файлами на основе таблиц имеют следующие недостатки по сравнению с общими пространствами имен, такими как системное пространство имен или общие пространства имен.
В пространствах имен таблиц с файлами на основе таблиц каждая таблица может иметь неиспользуемое пространство, которое может быть использовано только строками той же таблицы, что может привести к потере места, если оно не управляется должным образом.
fsyncоперации выполняются на нескольких файлах данных пространств имен таблиц с файлами на основе таблиц, а не на одном файле данных общего пространства имен. Поскольку операцииfsyncвыполняются на каждом файле, операции записи для нескольких таблиц нельзя объединить, что может привести к большему общему количеству операцийfsync.mysqld должен поддерживать открытый дескриптор файла для каждого файла пространства имен таблиц с файлами на основе таблиц, что может повлиять на производительность, если у вас много таблиц в пространствах имен таблиц с файлами на основе таблиц.
Требуется больше дескрипторов файлов, когда каждая таблица имеет свой собственный файл данных.
Возможна большая фрагментация, что может препятствовать производительности операций
DROP TABLEи сканирования таблиц. Однако, если фрагментация управляется, пространства имен таблиц с файлами на основе таблиц могут повысить производительность для этих операций.Пул буферов сканируется при удалении таблицы, находящейся в пространстве имен таблиц с файлами на основе таблиц, что может занять несколько секунд для больших пулов буферов. Сканирование выполняется с широким внутренним блокированием, что может задерживать другие операции.
Переменная
innodb_autoextend_increment, которая определяет размер приращения для расширения размера файла общего пространства имен с автоматическим расширением, когда он становится полным, не применяется к файлам пространства имен таблиц с файлами на основе таблиц, которые автоматически расширяются независимо от значенияinnodb_autoextend_increment. Первоначальные расширения пространств имен таблиц с файлами на основе таблиц происходят небольшими порциями, после чего расширения происходят с приращением в 4 МБ.
© 2025 Oracle
Licensed under the GPLv2 License.