什么是 MySQL 数据库引擎?

我环顾四周,发现一些 MySQL 引擎是 inodb 和 MyISAM。也许还有更多。我的问题是,这些数据库引擎是什么?

不同的 MySQL 引擎之间有什么不同? 更重要的是,我如何决定使用哪一个?

67578 次浏览
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         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

如果必须使用 MySQL,我个人总是使用 InnoDB。它支持事务和外键,而 MyISAM 不支持。

MyISAM 和 InnoDB 是最常用的引擎。

MyISAM 比 InnoDB 稍快一些,它实现了 FULLTEXT 索引,这对于集成搜索功能非常有用。 MyISAM 没有事务处理,也不实现外键约束,这是一个主要缺点。

但是您可以同时使用这两者的优点,并使用不同的存储引擎创建表。有些软件(我想是 WordPress)使用 Inno 处理大多数数据,比如页面、版本之间的关系等等。文章的记录包含一个 ID,该 ID 链接到使用 MyISAM 的单独内容表中的记录。这样,内容存储在具有最佳搜索能力的表中,而大多数其他数据存储在强制数据完整性的表中。

如果我是你,我会选因诺,因为它是最可靠的。如果需要,只能在特定目的下使用 MyISAM。

在创建新表时,可以将数据库配置为默认使用 InnoDB。

可以使用不同的存储引擎,因此没有什么理由不使用 MyISAM 或 InnoDB 引擎类型。MyISAM 在大多数情况下都可以做到,但是如果与您的搜索和选择相比有大量的更新或插入,那么您将从 InnoDB 引擎获得更好的性能。为了从 InnoDB 中获得最佳性能,您需要调整服务器的参数,否则没有理由不使用它。

MERGE 引擎是从多个相同定义的表中查询数据的非常有效的方法。MEMORY 引擎是对数据执行大量复杂查询的最佳方式,这些查询在基于磁盘的引擎上搜索效率低下。CSV 引擎是导出可用于其他应用程序的数据的一种很好的方法。对于具有经常访问的唯一密钥的数据,BDB 非常适合。

This Image provides an overview of some storage engines provided with MySQL:

也许你会在这里得到更多的信息: Https://en.wikipedia.org/wiki/database_engine

数据库引擎(或存储引擎)是数据库管理系统(DBMS)用来从数据库中创建、读取、更新和删除(CRUD)数据的底层基于组件的软件工程。大多数数据库管理系统都包含自己的应用程序编程接口(API) ,允许用户与其底层引擎交互,而无需通过 DBMS 的用户界面。