代码之家  ›  专栏  ›  技术社区  ›  pavanred

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

  •  66
  • pavanred  · 技术社区  · 14 年前

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

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

    4 回复  |  直到 6 年前
        1
  •  69
  •   Vincent Savard Midhun    14 年前
    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不支持。

        2
  •  37
  •   GolezTrol    14 年前

    myisam和innodb是最常用的引擎。

    myisam比innodb稍快,实现了全文索引,这对于集成搜索功能非常有用。 myisam不进行事务处理,也不实现外键约束,这是一个主要缺点。

    但您可以同时使用这两种方法中最好的一种,并使用不同的存储引擎创建表。有些软件(我认为是WordPress)对大多数数据都使用Inno,比如页面之间的关系、版本等。日志记录包含一个ID,该ID链接到使用MyISAM的单独内容表中的一个记录。这样,内容存储在具有最佳搜索功能的表中,而大多数其他数据存储在具有数据完整性的表中。

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

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

        3
  •  12
  •   rajangupta    9 年前

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

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

    与您的搜索和选择相比,插入可以使InnoDB引擎获得更好的性能。要获得InnoDB的最佳性能,您需要调整服务器的参数,否则没有理由不使用它。

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

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

        4
  •  1
  •   Kirk Beard    6 年前

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

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