Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are MySQL database engines? [closed]

I looked around and found some of the MySQL engines are innodb and MyISAM. Perhaps there are few more. My question is what are these database engines?

What are the differences between different MySQL engines? And more importantly, How do I decide which one to use?

like image 605
pavanred Avatar asked Nov 20 '10 16:11

pavanred


People also ask

What are database engines in MySQL?

Database engines provide the underlying functionality for MySQL to work with and process data. The two most common and popular MySQL database engines are MyISAM and InnoDB. MyISAM is the default engine for MySQL for versions earlier than 5.5. 5, and functions well in most scenarios.

What are the different types of MySQL engines?

By default, MySQL supports three database engines: ISAM, MyISAM, and HEAP. Two other types, InnoDB and Berkley (BDB), are often available as well.

Which are database engines?

A database engine (or storage engine) is the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database.


2 Answers

mysql> SHOW ENGINES; +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        | | MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         | | BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         | | CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         | | MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         | | FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       | | ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         | | MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ 

I personally always use InnoDB if I have to use MySQL. It supports transaction and foreign keys while MyISAM doesn't.

like image 152
Vincent Savard Avatar answered Sep 27 '22 00:09

Vincent Savard


MyISAM and InnoDB are the most commonly used engines.

MyISAM is slightly faster than InnoDB, and implements the FULLTEXT index which is quite useful for integrating search capabilities. MyISAM is not transacted and doesn't implement foreign key constraints, which is a major drawback.

But you can use the best of both and create tables with different storage engines. Some software (WordPress, I think) use Inno for most data, like relations between pages, versions etc. Records for the posts contain an ID that links to a record in a separate content table that uses MyISAM. That way, the content is stored in the table that has the best search capabilities, while most other data is stored in tables that enforce data integrity.

If I were you, I'd pick Inno, because it is the most reliable. Only use MyISAM for specific purposes if you need to.

You can configure your database to use InnoDB by default when creating new tables.

like image 45
GolezTrol Avatar answered Sep 26 '22 00:09

GolezTrol