четверг, 15 декабря 2011 г.

MySQL - файлы таблиц

MyISAM таблицы


MyISAM таблицы представляют собой файлы .frm, .MYD, .MYI. Например таблица с именем mytable будет выглядеть в виде файлов

mytable.frm - файл описания в котором хранится структура таблицы
mytable.MYD - файл данных в котором хранится содержимое таблицы
mytable.MYI - файл индексов, который содержит информацию обо всех индексах, представленных в данной таблице

Пример с сервера:

-rw-rw---- 1 mysql mysql    0 Dec 13 05:35 ofGroupProp.MYD
-rw-rw---- 1 mysql mysql 1.0K Dec 13 05:35 ofGroupProp.MYI
-rw-rw---- 1 mysql mysql 8.5K Dec 13 05:35 ofGroupProp.frm
-rw-rw---- 1 mysql mysql    0 Dec 13 05:35 ofGroupUser.MYD
-rw-rw---- 1 mysql mysql 1.0K Dec 13 05:35 ofGroupUser.MYI
-rw-rw---- 1 mysql mysql 8.5K Dec 13 05:35 ofGroupUser.frm
-rw-rw---- 1 mysql mysql   52 Dec 13 05:35 ofID.MYD
-rw-rw---- 1 mysql mysql 2.0K Dec 13 05:36 ofID.MYI
-rw-rw---- 1 mysql mysql 8.4K Dec 13 05:35 ofID.frm

InnoDB таблицы


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

Общее табличное пространство


Тип табличного пространства который состоит из одного или нескольких больших файлов, расположенных в каталоге данных. Объем этих файлов равен сумме размеров индивидуальных файлов. При таком режиме единственным файлом, имеющим отношение к определенной таблице, является файл с расширением .frm.
Данный режим используется InnoDB движком по умолчанию.

Индивидуальное табличное пространство


Есть возможность настроить InnoDB таким образом, чтобы на одну таблицу приходилось по одному табличному пространству (с помощью параметра innodb_file_per_table = 1 в конфиг.файле my.cnf, перед включением данного параметра обязательно выполните бэкап всех текущих баз данных!). В таком случае каждой таблице InnoDB будет соответствовать по два файла в каталоге базы данных. Это файл .frm и файл .ibd, содержащие данные и индексы этой таблицы.

Пример с сервера:

-rw-rw---- 1 mysql mysql 8.5K Oct 31 13:35 bugreport.frm
-rw-rw---- 1 mysql mysql  96K Oct 31 13:36 bugreport.ibd
-rw-rw---- 1 mysql mysql 8.6K Oct 31 13:35 channels.frm
-rw-rw---- 1 mysql mysql  96K Oct 31 13:36 channels.ibd

И все равно общее табличное пространство будет использоваться даже при таком режиме работы. InnoDB ведет внутренний словарь данных, содержащий информацию о каждой таблице. Этот словарь хранится в общем табличном пространстве.

Так же в независимости от используемого механизма хранения и его настроек в каталоге данных каждой базы данных есть файл db.opt, этот файл содержит стандартную кодировку и порядок сортировки.

Комментариев нет:

Отправить комментарий