美文网首页高性能MySQL
MySQL存储引擎介绍

MySQL存储引擎介绍

作者: Coding小聪 | 来源:发表于2018-07-03 23:49 被阅读15次

    数据库中都会有存储引擎的概念,MySQL的特点就是其存储引擎支持插件式的,存储引擎用来处理数据库相关的CRUD操作。

    MySQL中常见的存储引擎有如下几种:

    • InnoDB
    • MyISAM
    • Memory
    • NDB Cluster
    • Federated
    • CSV
    • Archive

    InnoDB最开始作为第三方存储引擎存在,其诞生的时间比MySQL本身还要早,它被包括在MySQL数据库所有的二进制发行版本中,并从MySQL5.5开始取代MyISAM的位置成为默认的表存储引擎。另外,其他的存储引擎官方已经不再维护和开发,所以我们应该要尽可能使用InnoDB

    可以通过show engines查看MySQL支持的存储引擎

    当前MySQL版本支持的存储引擎

    各存储引擎特性

    先简述一下两个概念,OLTP和OLAP。


    OLTP和OLAP的区别

    InnoDB

    1. 面向OLTP的应用,支持事务;
    2. 支持行锁定、外键;
    3. 不仅可以使用文件系统,还能使用裸设备;
    4. 实现了SQL标准的4种隔离级别。

    MyISAM

    1. 不支持事务,面向OLAP应用,如数据仓库;
    2. 并发时锁表;
    3. 索引容易损坏、数据容易丢失;
    4. 数据文件可以直接拷贝到另一台服务器使用。

    MyISAM存储引擎创建的表由.MYD和.MYI文件组成。.MYD用来存放数据 ,.MYI存放索引。

    表a和b的存储文件
    a表的创建语句:create table a(a int) engine=myisam;。b表的创建语句:create table b(a int);其默认的存储引擎为InnoDB。
    a.frm和b.frm为表的结构文件,可以通过mysqlfrm将frm文件转成create table语句。
    mysqlfrm --diagnostic /var/lib/mysql/test/a.frm
    

    mysqlfrm工具在MySQL Utilities工具包中,使用前需要先安装Utilities
    .MYD是MyISAM存储引擎的数据存储文件,.MYI是MyISAM存储引擎的索引存储文件,.ibd是InnoDB存储引擎的数据和索引存储文件。

    NDB

    NDB存储引擎也叫NDB Cluster存储引擎,主要用于MySQL Cluster分布式集群环境。

    Memory

    1. 全内存存储,会话失效后数据丢失;
    2. 支持哈希索引。

    CSV

    1. 数据通过csv文件存储;
    2. 要求每个列都是NOT NULL属性。

    Federated

    Federated有点类似于Oracle的dblink,主要用于远程存取其他MySQL服务器上的数据。

    各大存储引擎特性对比

    参考
    《MySQL技术内幕:InnoDB存储引擎》

    相关文章

      网友评论

        本文标题:MySQL存储引擎介绍

        本文链接:https://www.haomeiwen.com/subject/vhtsuftx.html