|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Чтобы сделать режим файла на таблицу значением по умолчанию для сервера MySQL, запустите сервер с --innodb_file_per_table
параметр командной строки, или добавляют эту строку к [mysqld] раздел my.cnf:
[mysqld]innodb_file_per_table
Можно также дать команду, в то время как сервер работает:
SET GLOBAL innodb_file_per_table=1;
С включенным режимом файла на таблицу, InnoDB хранилища каждая недавно составленная
таблица в его собственном
файл в соответствующем каталоге базы данных. В отличие от этого tbl_name.ibdMyISAM механизм
хранения, с его отдельным и
tbl_name.MYD файлы для индексируют и
данные, tbl_name.MYIInnoDB хранит данные и индексирование вместе в сингле .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 TABLEtable_nameENGINE=InnoDB;-- Move table from its own tablespace to system tablespace.SET GLOBAL innodb_file_per_table=0;ALTER TABLEtable_nameENGINE=InnoDB;
InnoDB всегда нуждается в системной табличной области, потому что она
помещает свой внутренний словарь
данных и журналы отмены там.
.ibd файлы не достаточны для InnoDB работать.
Когда таблица перемещается из системной табличной области в его собственное .ibd
файл, файлы данных, которые составляют системную табличную область, остается тем же самым размером. Место,
прежде занятое таблицей, может быть снова использовано для нового InnoDB
данные, но не исправляется для использования операционной системой. Перемещаясь большой InnoDB таблицы из системной табличной области, где дисковое пространство
ограничивается, Вы могли бы предпочесть включать innodb_file_per_table и затем
воссоздайте весь экземпляр, используя mysqldump команду.