什么是MySQL数据库引擎?[关闭]


71

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

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


Answers:


72
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不支持。


39

MyISAM和InnoDB是最常用的引擎。

MyISAM比InnoDB快一点,并且实现了FULLTEXT索引,这对于集成搜索功能非常有用。MyISAM不被处理,并且不实现外键约束,这是一个主要缺点。

但是您可以充分利用两者的优势,并使用不同的存储引擎创建表。一些软件(我认为WordPress)对大多数数据使用Inno,例如页面,版本之间的关系等。帖子的记录包含ID,该ID链接到使用MyISAM的单独内容表中的记录。这样,内容将存储在具有最佳搜索功能的表中,而其他大多数数据将存储在可增强数据完整性的表中。

如果我是你,我会选择Inno,因为它是最可靠的。仅在需要时才将MyISAM用于特定目的。

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


MyISAM的另一个限制是(主)键(单个或组合键)的长度不能超过1000个字节,这在大多数情况下是可以的,但是在构建一些较大的BI模型时最终可能会达到此限制。
Paulo Bueno

15

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

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

该映像概述了MySQL随附的一些存储引擎:


1

也许您会在这里获得更多信息:https : //en.wikipedia.org/wiki/Database_engine

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.