Drizzle originally inherited the FRM file from MySQL (which
inherited it from UNIREG). The FRM file stores metadata about a
table; what columns it has, what type those columns are, what
indexes, any default values, comments etc are all stored in the
FRM. In the days of MyISAM, this worked relatively well. The row
data was stored in table.MYD, indexes on top of it in table.MYI
and information about the format of the row was
in table.FRM. Since MyISAM itself wasn’t crash safe, it didn’t
really matter if creating/deleting the FRM file along with the
table was either.
As more sophisticated engines were introduced (e.g. InnoDB) that had their own data dictionary, there started to be more of a problem. There were now two places storing information about a table: the FRM file and the data dictionary specific to the engine. Even if the data dictionary of the storage engine was crash safe, the FRM file was not plugged into that, so you …
[Read more]