MySQL性能调优与架构设计(二)—— MySQL存储引擎简介

什么是存储引擎

  1. mysql中的数据用各种不同的技术存储在文件(或者内存)中。
  2. 这些技术中每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。
  3. 通过选择不同的技术,你能够获得额外的速度和功能,从而改善你的应用的整体功能。
  4. 例如,你在研究大量的临时数据,你也许需要使用内存mysql存储引擎。内存存储引擎能够在内存中存储所有的表格数据。
  5. 又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。
  6. 这些不同的技术及配套的相关功能在mysql中被称为存储引擎。

MySQL存储引擎-前言

  1. mysql默认配置了许多不同的存储引擎,可以预先设置或者在mysql服务器中启用。
  2. 你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
  3. 对mysql来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用mysql强大的功能。
  4. mysql的插件式存储引擎主要包括MyISAM、Innodb、NDB Cluster、Maria、Falcon、Memory、Archive、Merge、Federated 等。
  5. 其中最著名而且使用最广泛的是MyISAM和Innodb两种存储引擎。

    (1)MyISAM是mysql最早的ISAM存储引擎的升级版本,也是Mysql默认存储引擎。
    (2)而Innodb实际上并不是mysql公司的,而是第三方软件公司Innobase所开发,其最大的特点是提供了事务控制等特性,所以使用者也非常广泛。
  6. 其他的一些存储引擎相对来说使用场景稍微少一些,都是应用于某些特定的场景。

    (1)如NDB Cluster虽然也支持事务,但主要是用于分布式环境,属于一个share nothing的分布式数据库存储引擎。
    (2)Maria是mysql最新开发的对MyISAM的升级版存储引擎
    (3)Falcon是mysql公司自行研发的为了替代当前Innodb存储引擎的一款带有事务等高级特性的数据库存储引擎。
    (4)Memory存储引擎所有数据和所有均存储与内存中,所以主要是用于一些临时表,或者对性能要求极高,但是允许在主机Crash的时候丢失数据的特定场景下。
    (5)Archive是一个数据经过高比例压缩存放的存储引擎,主要用于存放过期而且很少访问的历史信息,不支持索引。
    (6)Merge和Federated在严格意义来说,并不能算作一个存储引擎。
    (7)因为Merge存储引擎主要是将几个基表merge在一起,对外作为一个表来提供服务,基表可以基于其他的几个存储引擎。
    (8)而Federated实际上所做的事情,有点类似于Oracle的dblink,主要用于远程存取其他mysql服务器上面的数据。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章