MySQL to Adopt ACID for System Tables
In what is probably a surprise to many developers, MySQL currently stores its critical system tables in MyISAM instead of InnoDB. Since MyISAM isn’t ACID compliant, there is a chance for data loss or corruption when modifying system objects such as privilege. Morgan Tocker has announced that the MySQL team intends to use InnoDB for system tables.
MyISAM is the original storage engine for MySQL. It is based on IBM’s mainframe database technology known as Indexed Sequential Access Method or ISAM. Because it doesn’t support transactions and the associated overhead, MyISAM tends to be faster than other database storage engines. The downside of this is that it isn’t ACID compliant and is prone to data corruption, especially during power failure scenarios.
The primary alternative to MyIASM is InnoDB, which was created by the Innobase Oy. Because it offers ACID-compliant transactions and foreign key constraints, among other features, Oracle made it the default storage engine in MySQL 5.5.
Other storage engines for MySQL still in active development include:
- Archive by Oracle
- Aria by Monty Program
- CONNECT by Monty Program
- CSV by Oracle
- NDB by Oracle
- InfiniDB by Calpont
- TokuDB by TokuTek
- XtraDB by Percona GPL
- FederatedX by Monty Program
- CassandraSE by Monty Program
- sequence by Monty Program
- mroonga by Monty Program
While MySQL is planning to support InnoDB only, the fork MariaDB has instead chosen to be fully agnostic.
As far as release dates are concerned, Morgan writes,
The DMR 'release train' model requires for features to be stable before being merged, rather than releases holding for specific features. So I don't want to get ahead of myself here for work that is in early development. Soon :D
mroonga is not developed by Monty Program