Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что такое Табличное Пространство InnoDB 
:(
    Опции темы
Рыжий
Дата 5.9.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Здравствуйте!
Во всех источниках написано, что для хранения данных, InnoDB в файловой системе создает *.frm - файл описания. А хранит данные в каком-то "табличном пространстве".  

Объясните пожалуйста, что это за пространство и где его найти? smile 
PM MAIL ICQ   Вверх
Бонифаций
Дата 6.9.2009, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 20
Всего: 40



Это файл, где innodb хранит данные. Если Вы посмотрите пример конфигурации, my.cnf, то там будет что то типа 

innodb_data_file_path=ibdata1:10M:autoextend

Вот это вот и задает "табличное пространство" в файле ibdata1 с начальным размером в 10 мегабайт и возможностью роста файла при необходимости. Табличное пространство можн сделать не только в файле, но и например на голом разделе диска (без файловой системы).




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Рыжий
Дата 6.9.2009, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Бонифаций, если я правильно понял - innoDB хранит все данные со всех таблиц/баз в одном месте, в отличие от MyIsam, которая создает 3 отдельных файла для каждой таблицы, у innoDB этот файл и называется "табличным пространством"...
А если размер файла достиг предела - innoDB создает другой файл и продолжает писать в него?
PM MAIL ICQ   Вверх
Бонифаций
Дата 6.9.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 20
Всего: 40



При испльзовании innodb есть возможность выбора. - Или все таблицы в одном файле, или каждой таблице по файлу.

При общего файла - можно сделать его расширяемым, либо задать один (или несколько) файлов фиксированного размера (ну или устройство без файловой системы). Если у вас кончилось место в табличном пространстве, innodb автоматически не создаст новый файл. Вам нужно самому в эту строку конфигурации добавить новый файл, и иннодб его проинициализирует и будет использовать.


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Рыжий
Дата 6.9.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Бонифаций, Спасибо, за ответы!
Из книги MySQL (Поля Дюбуа):
Цитата

Для таблиц InnoDB максимальный размер табличного пространства составляет 4 млрд. страниц; размер страницы по умолчанию равен 16 Кбайт. (СУБД MySQL может быть перекомпилирована для использования страницы InnoDB размером от 8 до 64 Кбайт.) Максимальный размер табличного пространства также привязан к размеру отдельной таблицы InnoDB.

Если это все хранится в одном файле - у разных ОС есть ограничения на размер файлов, например не более 4 Гб. Что тогда?  smile 

Просто хочу разобраться в этом раз и навсегда, а нормального объяснения нигде найти не могу = (
PM MAIL ICQ   Вверх
Рыжий
Дата 6.9.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Вот текст из той же книги, который может ответить на вопрос:
Цитата

Чтобы определить реальный предельный размер таблиц в InnoDB, необходимо отметить следующее: таблицы InnoDB всегда должны умещаться в табличном пространстве. При наличии одной таблицы типа InnoDB она может иметь такой же размер, как и все табличное пространство. Но если, более вероятно, существует много таблиц, они все разделяют одно и то же табличное пространство, поэтому их размер ограничивается не только размером табличного пространства, но и количеством размещенных в нем таблиц, каждая отдельная таблица типа InnoDB имеет возможность расширения до тех пор, пока табличное пространство окончательно не заполнится. С другой стороні после заполнения табличного пространства ни одна таблица InnoDB не может больше увеличиваться в размере, пока к табличному пространству не будет добавлен еще один компонент. 


И еще один:
Цитата

Табличное пространство InnoDB может содержать несколько файлов и может включать разделы. Дескриптор InnoDB в действительности работает с табличным пространством как с виртуальной файловой системой, в пределах которой он хранит все таблицы типа InnoDB. Таблицы могут выходить за пределы установленные файловой системой для отдельных файлов. Но можно настроить механизм InnoDB таким образом, чтобы индивидуальные табличные пространства использовались по одному на тиблицу. В этом случае каждой таблице будет соответствовать свой файл .ibd в каталоге баз данных.


Основные выводы можно сделать - Каждая таблица InnoDB имеет описание *.frm . InnoDB хранит все данные со всех таблиц в одном файле. И называет это табличным пространством. Табличное пространство может быть очень большим, и даже превышать ограничения ОС по размеру фалов (как так?) Или можно устроить индивидуальные файлы для каждой таблицы.  smile 

Это сообщение отредактировал(а) Рыжий - 6.9.2009, 15:31
PM MAIL ICQ   Вверх
Бонифаций
Дата 6.9.2009, 16:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 20
Всего: 40



Табличное пространство - физически просто набор из одного или нескольких файлов. Логически - это одно пространство

Цитата(Рыжий @  6.9.2009,  14:57 Найти цитируемый пост)
Если это все хранится в одном файле - у разных ОС есть ограничения на размер файлов, например не более 4 Гб. Что тогда?  smile 


Вы можете сделать несколько файлов, каждый из которых меньше 4Г. Но вместе это будет одно табличное пространство.


Цитата(Рыжий @  6.9.2009,  15:28 Найти цитируемый пост)
InnoDB хранит все данные со всех таблиц в одном файле. И называет это табличным пространством.


Не обязательно в одном файле. Может в нескольких. 

Так было достаточно долго, но была одна проблема - файлы из табличного пространства умеют увеличиваться если надо. Но не умеют уменьшаться. Так что если у вас были большие таблицы, файлы стали большие, а потом вы все эти таблицы удалили - место обратно в файловую систему уже не попадет. Файлы табличного пространства останутся большими. 

Это не для всех удобно. Поэтому года два назад -сделали такую опцию - что каждая таблица создает свой файл в табличном пространстве. Если вы удаляете таблицу - удаляется этот файл.  Многие пользуются. Многие предпочитают по старинке иметь просто один-два  больших файла на все таблицы. 


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0794 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.