时间: 2020-09-24|tag:33次围观|0 条评论

存储引擎是什么?

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。

这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在 MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。

选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。遗憾的是,其它类型的数据库解决方案采取的“一个尺码满足一切需求”的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了。

在这篇文章中,我们不准备集中讨论不同的存储引擎的技术方面的问题(尽管我们不可避免地要研究这些因素的某些方面),相反,我们将集中介绍这些不同的引擎分别最适应哪种需求和如何启用不同的存储引擎。为了实现这个目的,在介绍每一个存储引擎的具体情况之前,我们必须要了解一些基本的问题。

如何确定有哪些存储引擎可用

你可以在MySQL(假设是MySQL服务器4.1.2以上版本)中使用显示引擎的命令得到一个可用引擎的列表。

mysql> show engines;

+------------+---------+----------------------------------------------------+

| Engine | Support | Comment |

+------------+---------+-----------------------------------------------------+

| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |

| HEAP | YES | Alias for MEMORY |

| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |

| MERGE | YES | Collection of identical MyISAM tables |

| MRG_MYISAM | YES | Alias for MERGE |

| ISAM | NO | Obsolete storage engine, now replaced by MyISAM |

| MRG_ISAM | NO | Obsolete storage engine, now replaced by MERGE |

| InnoDB | YES | Supports transactions, row-level locking, and foreign keys |

| INNOBASE | YES | Alias for INNODB |

| BDB | NO | Supports transactions and page-level locking |

| BERKELEYDB | NO | Alias for BDB |

| NDBCLUSTER | NO | Clustered, fault-tolerant, memory-based tables |

| NDB | NO | Alias for NDBCLUSTER |

| EXAMPLE | NO | Example storage engine |

| ARCHIVE | NO | Archive storage engine |

| CSV | NO | CSV storage engine |

+------------+---------+-------------------------------------------------------+

16 rows in set (0.01 sec) 这个表格显示了可用的数据库引擎的全部名单以及在当前的数据库服务器中是否支持这些引擎。

对于MySQL 4.1.2以前版本,可以使用mysql> show variables like "have_%"(显示类似“have_%”的变量):

mysql> show variables like "have_%";

+------------------+----------+

| Variable_name | Value |

+------------------+----------+

| have_bdb | YES |

| have_crypt | YES |

| have_innodb | DISABLED |

| have_isam | YES |

| have_raid | YES |

| have_symlink | YES |

| have_openssl | YES |

| have_query_cache | YES |

+------------------+----------+

8 rows in set (0.01 sec)

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《MySQL不同存储引擎的区别和其启动方法
   

还没有人抢沙发呢~