# Storage Engine When using Oracle Database or Microsoft SQL Server, a single set of code is responsible for low-level database operations, such as retrieving a particular row from a table based on primary key value. The MySQL server, however, has been designed so that multiple storage engines may be utilized to provide low-level database functionality, including resource locking and transaction management. As of version 6.0, MySQL includes the following storage engines: ## Storage Engines | Storage Engine | Description | | -------------- | --------------------------------------------------------------------------------------------------------------------- | | MyISAM | A nontransactional engine employing table locking | | MEMORY | A nontransactional engine used for in-memory tables | | BDB | A transactional engine employing page-level locking | | InnoDB | A transactional engine employing row-level locking | | Merge | A specialty engine used to make multiple identical MyISAM tables appear as a single table (a.k.a. table partitioning) | | Maria | A MyISAM replacement included in version 6.0.6 that adds full recovery capabilities | | Falcon | A new (as of 6.0.4) high-performance transactional engine employing row-level locking | | Archive | A specialty engine used to store large amounts of unindexed data, mainly for ar- chival purposes | **MySQL** supports table-by-table storage engine choices. For any tables that might take part in transactions, you should choose the **InnoDB** or **Falcon** storage engine, which uses row-level locking and versioning to provide the highest level of concurrency across the different storage engines. Show all available engines: ```sql SHOW ENGINES; ``` To see which engine is used for a table, ```sql SHOW TABLE STATUS LIKE 'transaction'; ``` ### Set Storage Engine for A Table ```sql ALTER TABLE transaction ENGINE = INNODB; ```