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_name
ENGINE=InnoDB;-- Move table from its own tablespace to system tablespace.SET GLOBAL innodb_file_per_table=0;ALTER TABLEtable_name
ENGINE=InnoDB;
InnoDB
всегда нуждается в системной табличной области, потому что она
помещает свой внутренний словарь
данных и журналы отмены там.
.ibd
файлы не достаточны для InnoDB
работать.
Когда таблица перемещается из системной табличной области в его собственное .ibd
файл, файлы данных, которые составляют системную табличную область, остается тем же самым размером. Место,
прежде занятое таблицей, может быть снова использовано для нового InnoDB
данные, но не исправляется для использования операционной системой. Перемещаясь большой InnoDB
таблицы из системной табличной области, где дисковое пространство
ограничивается, Вы могли бы предпочесть включать innodb_file_per_table
и затем
воссоздайте весь экземпляр, используя mysqldump команду.