我环顾四周,发现一些 MySQL 引擎是 innodb 和 MyISAM。也许还有一些。我的问题是这些数据库引擎是什么?
不同的 MySQL 引擎有什么区别?更重要的是,我如何决定使用哪一个?
我环顾四周,发现一些 MySQL 引擎是 innodb 和 MyISAM。也许还有一些。我的问题是这些数据库引擎是什么?
不同的 MySQL 引擎有什么区别?更重要的是,我如何决定使用哪一个?
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 的单独内容表中的记录。这样,内容存储在具有最佳搜索能力的表中,而大多数其他数据存储在强制数据完整性的表中。
如果我是你,我会选择 Inno,因为它是最可靠的。如果需要,仅将 MyISAM 用于特定目的。
您可以将数据库配置为在创建新表时默认使用 InnoDB。
可用的存储引擎不同,几乎没有理由不使用 MyISAM 或 InnoDB 引擎类型。MyISAM 在大多数情况下都可以,但是如果与搜索和选择相比,您有大量的更新或插入,那么您将从 InnoDB 引擎中获得更好的性能。为了从 InnoDB 中获得最佳性能,您需要调整服务器的参数,否则没有理由不使用它。
MERGE 引擎是一种从多个相同定义的表中查询数据的非常有效的方法。MEMORY 引擎是对数据执行大量复杂查询的最佳方式,这些查询在基于磁盘的引擎上搜索效率很低。CSV 引擎是导出可用于其他应用程序的数据的好方法。BDB 非常适合具有经常访问的唯一键的数据。
也许您会在这里获得更多信息: https ://en.wikipedia.org/wiki/Database_engine
数据库引擎(或存储引擎)是数据库管理系统 (DBMS) 用于从数据库中创建、读取、更新和删除 (CRUD) 数据的底层软件组件。大多数数据库管理系统都包含它们自己的应用程序编程接口 (API),它允许用户与其底层引擎进行交互,而无需通过 DBMS 的用户界面。