美文网首页
mysql存储引擎

mysql存储引擎

作者: ZMRWEGo | 来源:发表于2018-12-13 11:29 被阅读4次

    一个数据库相对于普通文件存储的好处就是它的索引了,数据库可以快速通过索引进行数据的查询,而普通的文件操作系统则要挨个的一次遍历,对于大量的数据来说,数据库的优势显而易见。

    mysql主要有四中存储引擎:MyISAM、InnoDB、MEMORY、Archive。

    一、MyISAM存储引擎

    MyISAM基于ISAM存储引擎(一种较老的存储引擎),并对其进行扩展。他是在web、数据仓库和其他应用环境下最常用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务

    MyISAM的主要特性:
    1. 支持大文件存储
    2. 可以把数据文件和索引文件放在不同目录(InnoDB是放在一个目录里面)

    MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:



    假设我们以Col1为主键,则上图是一个MyISAM表的主索引示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。我们可以创建更多的辅助索引,辅助索引与主索引的区别就是辅助索引的key可以重复。

    因此,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索key,如果指定key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据(行数据)

    二、InnoDB存储引擎

    InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是mysql的默认存储引擎。

    InnoDB的主要特性:
    1. InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。
    2. InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的
    3. InnoDB支持外键完整性约束,存储表的数据时,每张表的存储都按照主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个隐藏的主键。

    InnoDB也是使用的B+树作为索引的,但与MyISAM不同的是,MyISAM的索引文件和数据文件是分离的,索引文件仅保存数据的地址。而在InnoDB中,表数据本身就是按照B+树组织的,这棵树的叶节点data域保存了完整的数据记录。


    第二个与MyISAM素引不同的是InnoDB的辅助素引data域存储相应记录主键的值而不是地址

    三、MEMORY存储引擎

    MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。

    MEMORY主要特性有:
    1、MEMORY表的每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度
    2、MEMORY存储引擎执行HASH和BTREE缩影
    3、可以在一个MEMORY表中有非唯一键值
    4、MEMORY表使用一个固定的记录长度格式
    5、MEMORY不支持BLOB或TEXT列
    6、MEMORY支持AUTO_INCREMENT列和对可包含NULL值的列的索引
    7、MEMORY表在所由客户端之间共享(就像其他任何非TEMPORARY表)
    8、MEMORY表内存被存储在内存中,内存是MEMORY表和服务器在查询处理时的空闲中,创建的内部表共享
    9、当不再需要MEMORY表的内容时,要释放被MEMORY表使用的内存,应该执行DELETE FROM或TRUNCATE TABLE,或者删除整个表(使用DROP TABLE)

    四、存储引擎的选择

    InnoDB:如果要提供提交、回滚、崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择
    MyISAM:如果数据表主要用来插入和查询记录,则MyISAM(但是不支持事务)引擎能提供较高的处理效率
    Memory:如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。数据的处理速度很快但是安全性不高。
    Archive:如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive

    相关文章

      网友评论

          本文标题:mysql存储引擎

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