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

5.3.2. Управление Файловым пространством

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

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

Страницы, Степени, Сегменты, и Табличные области

Каждая табличная область состоит из страниц базы данных. У каждой табличной области в экземпляре MySQL есть тот же самый размер страницы. По умолчанию у всех табличных областей есть размер страницы 16 Кбит; можно уменьшить размер страницы до 8 Кбит или 4 Кбит, определяя innodb_page_size опция, когда Вы создаете экземпляр MySQL.

Страницы группируются в степени размера 1 МБ (64 последовательных страницы 16 Кбит, или страницы на 128 8 Кбит, или страницы на 256 4 Кбита). "Файлы" в табличной области призываются сегменты InnoDB. (Эти сегменты отличаются от сегмента отката, который фактически содержит много сегментов табличной области.)

Когда сегмент растет в табличной области, InnoDB выделяет первые 32 страницы этому по одному. После этого, InnoDB начинает выделять целые степени сегменту. InnoDB может составить в целом 4 степени за один раз к большому сегменту, чтобы гарантировать хороший sequentiality данных.

Два сегмента выделяются для каждого, индексируют в InnoDB. Каждый для узлов, не являющихся листом B-дерева, другой для вершин. Хранение вершин, непрерывных на диске, включает лучшим последовательным операциям ввода-вывода, потому что эти вершины содержат фактические табличные данные.

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

Когда Вы просите доступное свободное пространство в табличной области, выходя a SHOW TABLE STATUS оператор, InnoDB сообщают степени, которые определенно свободны в табличной области. InnoDB всегда резервы некоторые степени для уборки и других внутренних целей; эти зарезервированные степени не включаются в свободное пространство.

Когда Вы удаляете данные из таблицы, InnoDB сокращается соответствующее B-дерево индексирует. Становится ли освобожденное пространство доступным другим пользователям, зависит от того, удаляет ли образец, освобождает отдельные страницы или степени к табличной области. Отбрасывание таблицы или удаление всех строк от этого, как гарантируют, будут освобождать пространство другим пользователям, но помнить, что удаленные строки физически удаляются только работой чистки, которая происходит автоматически некоторое время после того, как они больше не необходимы для откатов транзакции или непротиворечивых чтений. (См. Раздел 14.2.3.11,"InnoDB Мультиуправление версиями".)

Чтобы видеть информацию о табличной области, используйте Монитор Табличной области. См. Раздел 14.2.4.4,"SHOW ENGINE INNODB STATUS и InnoDB Мониторы".

Как Страницы Касаются Строк таблицы

Максимальная длина строки, за исключением столбцов переменной длины (VARBINARY, VARCHAR, BLOB и TEXT), немного меньше чем половина страницы базы данных. Таким образом, максимальная длина строки составляет приблизительно 8000 байтов. LONGBLOB и LONGTEXT столбцы должны составить меньше чем 4 Гбайт, и длина строки итогов, включая BLOB и TEXT столбцы, должны быть меньше чем 4 Гбайт.

Если строка меньше чем половина страницы длиной, все это сохранено локально в пределах страницы. Если это превышает половину страницы, столбцы переменной длины выбираются для внешнего хранения вне страницы до судорог строки в пределах половины страницы. Для столбца, выбранного для хранения вне страницы, InnoDB хранит первые 768 байтов локально в строке, и остальных внешне в страницы переполнения. У каждого такого столбца есть свой собственный список страниц переполнения. 768-байтовый префикс сопровождается 20-байтовым значением, которое хранит истинную длину столбца и точек в список переполнения, где остальная часть значения сохранена.