List:InnoDB Storage Engine« Previous MessageNext Message »
From:Stewart Smith Date:March 28 2012 1:14am
Subject:Re: Difference between internal data dictionary and table definition file
View as plain text  
On Tue, 27 Mar 2012 18:14:44 +0500, Kinaan Khan Sherwani <mr.sherwani@stripped>
> I am an undergraduate student and want to learn about innodb storage
> engine. I came up with this line in mysql reference manual that MySQL
> server keeps data dictionary information in .frm files which it stores
> in the database
> directories, whereas InnoDB also stores the information into its own
> data dictionary inside the table space files.I want to know , where
> comes the difference between InnoDB internal data dictionary and table
> definition ( .frm ) files . Do they store the same information about a
> table ?

No, they don't store all the same information. While the InnoDB data
dictionary duplicates a bunch of the information in the FRM, it does not
contain all of it.

e.g. the MySQL ENUM type is really just a integer when it comes down to

The FRM is the only place for table/column comments, real column types,
the 80x24 VT100 text interface definition etc.

If you want to delve in a bit more, check out how Drizzle does it. We
allow you to (read) the InnoDB data dictionary tables, you can see the
(remotely human readable) definition for the table protobuf message and
you can use the table protobuf printer utility to see what's in it for a
particular table.

There are a couple of sites out there that attempt to explain the FRM
file format, but all are incomplete beyond the obvious.

Stewart Smith