Spec-Zone .ru
спецификации, руководства, описания, API

5.4.1.1. Включение и Отключение Режима Файла на таблицу

Чтобы сделать режим файла на таблицу значением по умолчанию для сервера MySQL, запустите сервер с --innodb_file_per_table параметр командной строки, или добавляют эту строку к [mysqld] раздел my.cnf:

[mysqld]innodb_file_per_table

Можно также дать команду, в то время как сервер работает:

SET GLOBAL innodb_file_per_table=1;

С включенным режимом файла на таблицу, InnoDB хранилища каждая недавно составленная таблица в его собственном tbl_name.ibd файл в соответствующем каталоге базы данных. В отличие от этого MyISAM механизм хранения, с его отдельным tbl_name.MYD и tbl_name.MYI файлы для индексируют и данные, InnoDB хранит данные и индексирование вместе в сингле .ibd файл. tbl_name.frm файл все еще создается как обычно.

Если Вы удаляете innodb_file_per_table от Ваших опций запуска и перезапуска сервер, или выключают это с SET GLOBAL команда, InnoDB составляет любые новые таблицы в системной табличной области.

Можно всегда читать и писать любому InnoDB таблицы, независимо от установки файла на таблицу.

Перемещать таблицу от системной табличной области до ее собственной табличной области, или наоборот, изменение innodb_file_per_table установка и восстанавливает таблицу:

-- Move table from system tablespace to its own tablespace.SET GLOBAL innodb_file_per_table=1;ALTER TABLE table_name ENGINE=InnoDB;-- Move table from its own tablespace to system tablespace.SET GLOBAL innodb_file_per_table=0;ALTER TABLE table_name ENGINE=InnoDB;
Отметить

InnoDB всегда нуждается в системной табличной области, потому что она помещает свой внутренний словарь данных и журналы отмены там. .ibd файлы не достаточны для InnoDB работать.

Когда таблица перемещается из системной табличной области в его собственное .ibd файл, файлы данных, которые составляют системную табличную область, остается тем же самым размером. Место, прежде занятое таблицей, может быть снова использовано для нового InnoDB данные, но не исправляется для использования операционной системой. Перемещаясь большой InnoDB таблицы из системной табличной области, где дисковое пространство ограничивается, Вы могли бы предпочесть включать innodb_file_per_table и затем воссоздайте весь экземпляр, используя mysqldump команду.