MySQL中如何选择合适的存储引擎

46次阅读
没有评论

共计 2907 个字符,预计需要花费 8 分钟才能阅读完成。

这期内容当中丸趣 TV 小编将会给大家带来有关 MySQL 中如何选择合适的存储引擎,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

MySQL 有多种存储引擎:

MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

MySQL 支持数个存储引擎作为对不同表的类型的处理器。MySQL 存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:

◆ MyISAM 管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM 在所有 MySQL 配置里被支持,它是默认的存储引擎,除非你配置 MySQL 默认使用另外一个引擎。

◆ MEMORY 存储引擎提供“内存中”表。MERGE 存储引擎允许集合将被处理同样的 MyISAM 表作为一个单独的表。就像 MyISAM 一样,MEMORY 和 MERGE 存储引擎处理非事务表,这两个引擎也都被默认包含在 MySQL 中。

注释:MEMORY 存储引擎正式地被确定为 HEAP 引擎。

◆ InnoDB 和 BDB 存储引擎提供事务安全表。BDB 被包含在为支持它的操作系统发布的 MySQL-Max 二进制分发版里。InnoDB 也默认被包括在所 有 MySQL 5.1 二进制分发版里,你可以按照喜好通过配置 MySQL 来允许或禁止任一引擎。

◆ EXAMPLE 存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL 源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。

◆ NDB Cluster 是被 MySQL Cluster 用来实现分割到多台计算机上的表的存储引擎。它在 MySQL-Max 5.1 二进制分发版里提供。这个存储引擎当前只被, Solaris, 和 Mac OS X 支持。在未来的 MySQL 分发版中,我们想要添加其它平台对这个引擎的支持,包括 Windows。

◆ ARCHIVE 存储引擎被用来无索引地,非常小地覆盖存储的大量数据。

◆ CSV 存储引擎把数据以逗号分隔的格式存储在文本文件中。

◆ BLACKHOLE 存储引擎接受但不存储数据,并且检索总是返回一个空集。

◆ FEDERATED 存储引擎把数据存在远程中。在 MySQL 5.1 中,它只和 MySQL 一起工作,使用 MySQL C Client API。在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。

当你创建一个新表的时候,你可以通过添加一个 ENGINE 或 TYPE 选项到 CREATE TABLE 语句来告诉 MySQL 你要创建什么类型的表:

CREATE TABLE t (i INT) ENGINE = INNODB;

CREATE TABLE t (i INT) TYPE = MEMORY;

虽然 TYPE 仍然在 MySQL 5.1 中被支持,现在 ENGINE 是首选的术语。

如何选择最适合你的存储引擎呢?

下述存储引擎是最常用的:

◆ MyISAM:默认的 MySQL 插件式存储引擎,它是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改 STORAGE_ENGINE 配置变量,能够方便地更改 MySQL 服务器的默认存储引擎。

◆ InnoDB:用于事务处理应用程序,具有众多特性,包括 ACID 事务支持。

◆ BDB:可替代 InnoDB 的事务引擎,支持 COMMIT、ROLLBACK 和其他事务特性。

◆ Memory:将所有数据保存在 RAM 中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

◆ Merge:允许 MySQL DBA 或开发人员将一系列等同的 MyISAM 表以逻辑方式组合在一起,并作为 1 个对象引用它们。对于诸如数据仓储等 VLDB 环境十分适合。

◆ Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

◆ Federated:能够将多个分离的 MySQL 服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

◆ Cluster/NDB:MySQL 的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。

◆ Other:其他存储引擎包括 CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及 Example 引擎(可为快速创建定制的插件式存储引擎提供帮助)。

请记住,对于整个服务器或方案,你并不一定要使用相同的存储引擎,你可以为方案中的每个表使用不同的存储引擎,这点很重要。

show engines;
+————+———+—————————————————————-+
| Engine  | Support | Comment  |
+————+———+—————————————————————-+
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance  |
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables  |
| InnoDB  | YES  | Supports transactions, row-level locking, and foreign keys  |
| BerkeleyDB | NO  | Supports transactions and page-level locking  |
| BLACKHOLE | NO  | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE  | NO  | Example storage engine  |
| ARCHIVE  | NO  | Archive storage engine  |
| CSV  | NO  | CSV storage engine  |
| ndbcluster | NO  | Clustered, fault-tolerant, memory-based tables  |
| FEDERATED | NO  | Federated MySQL storage engine  |
| MRG_MYISAM | YES  | Collection of identical MyISAM tables  |
| ISAM  | NO  | Obsolete storage engine  |
+————+———+—————————————————————-+

上述就是丸趣 TV 小编为大家分享的 MySQL 中如何选择合适的存储引擎了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计2907字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)