广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    MySQL数据库存储引擎详解

    2018-04-05 20:12:38 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布

      存储引擎是什么?

      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安装软件中可用的引擎。如果你在使用一个预先包装好的MySQL二进制发布版软件,那么,这个软件就包含了常用的引擎。然而,需要指出的是,如果你要使用某些不常用的引擎,特别是CSV、RCHIVE(存档)和BLACKHOLE(黑洞)引擎,你就需要手工重新编译MySQL源码 。

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告