(mysql.info) innodb-file-space
Info Catalog
(mysql.info) innodb-disk-io
(mysql.info) file-space-management
(mysql.info) innodb-file-defragmenting
14.2.14.2 File Space Management
...............................
The data files that you define in the configuration file form the
tablespace of `InnoDB'. The files are simply concatenated to form the
tablespace. There is no striping in use. Currently, you cannot define
where within the tablespace your tables are allocated. However, in a
newly created tablespace, `InnoDB' allocates space starting from the
first data file.
The tablespace consists of database pages with a default size of 16KB.
The pages are grouped into extents of 64 consecutive pages. The `files'
inside a tablespace are called segments in `InnoDB'. The term
`rollback segment' is somewhat confusing because it actually contains
many tablespace segments.
Two segments are allocated for each index in `InnoDB'. One is for
non-leaf nodes of the B-tree, the other is for the leaf nodes. The idea
here is to achieve better sequentiality for the leaf nodes, which
contain the data.
When a segment grows inside the tablespace, `InnoDB' allocates the
first 32 pages to it individually. After that `InnoDB' starts to
allocate whole extents to the segment. `InnoDB' can add to a large
segment up to 4 extents at a time to ensure good sequentiality of data.
Some pages in the tablespace contain bitmaps of other pages, and
therefore a few extents in an `InnoDB' tablespace cannot be allocated
to segments as a whole, but only as individual pages.
When you ask for available free space in the tablespace by issuing a
`SHOW TABLE STATUS' statement, `InnoDB' reports the extents that are
definitely free in the tablespace. `InnoDB' always reserves some
extents for cleanup and other internal purposes; these reserved extents
are not included in the free space.
When you delete data from a table, `InnoDB' contracts the corresponding
B-tree indexes. Whether the freed space becomes available for other
users depends on whether the pattern of deletes frees individual pages
or extents to the tablespace. Dropping a table or deleting all rows
from it is guaranteed to release the space to other users, but remember
that deleted rows are physically removed only in an (automatic) purge
operation after they are no longer needed for transaction rollbacks or
consistent reads. (See innodb-multi-versioning.)
Info Catalog
(mysql.info) innodb-disk-io
(mysql.info) file-space-management
(mysql.info) innodb-file-defragmenting
automatically generated byinfo2html