Why Does InnoDB Need A Dictionary
An InnoDB dictionary is a set of internal tables InnoDB uses to
maintain various information about user tables. It serves as API
between a human and the database. While the humans refer to
tables by their names, InnoDB works with integer identifiers. The
dictionary stores correspondence between table name and index_id.
The dictionary tables are normal InnoDB tables, but they’re not
visible to a user. However, some versions of MySQL provide
read-only access to the dictionary in information_schema
database.
The dictionary is stored in ibdata1. Root page of SYS_TABLES, for
example, has id 8, so it’s the eighth page from the beginning of
ibdata1.
The dictionary pages are in REDUNDANT format even if you use
MySQL 5.6. I hope to write more about record formats in future
posts. For now, it’s enough to mention that REDUNDANT is the
oldest record format. It was available since 4.0 …
[Read more]