美文网首页
mysql数据库各存储引擎及区别

mysql数据库各存储引擎及区别

作者: 陈贵阳 | 来源:发表于2019-06-13 14:13 被阅读0次

    Mysql数据库一共几种存储引擎? 通过查询命令  show engines 可以查看数据库的存储引擎如下图:

    图1

    可以看到mysql数据库有很多种存储引擎,但是我们平时工作中使用接触到的或者面试被问到的主要有3种:

    1.InnoDB  存储引擎

    首先 InnoDB存储引擎是mysql数据库的默认存储引擎,也是事务性数据库的首选引擎,支持事务的ACID。InnoDB 的默认隔离级别是RR,使用Next-Key Lock算法避免幻读,达到Serializable隔离级别。什么是RR呢?看下图2,RR也是mysql数据库默认的隔离级别。

    图2

    InnoDB存储引擎的特点:

    1.支持事务。支持事务的四种隔离级别,是一种有commit、rollback和crash recovery capabilities(崩溃修复能力)的事务安全型表。

    2.支持行锁和外键约束,支持并发写。

    3.支持自动增长列。AUTO_INCREMENT自增长的字段,存储引擎InnoDB中必须包含只有该字段的索引。

    4.InnoDB支持共享表空间存储和多表空间存储。使用共享表空间存储时,表结构保存在.frm文件中,数据和索引保存在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以是多个文件;使用多表空间存储时,数据和索引单独保存在.ibd中。

    2.MyISAM 存储引擎

    1.不支持事务及外键约束。

    2.MyISAM表支持静态表、动态表、压缩表。其中静态表是默认的存储格式,具有存储迅速,易缓存的优点,缺点是占用的空间比动态表多,动态表则占用空间相对较少,但是频繁的更新或删除记录会产生碎片,压缩表占据的磁盘空间非常小,由于每个记录是被单独压缩的,因此访问开支也非常小 。

    3、每张使用MyISAM引擎建立的表对应磁盘中的3个文件,文件名和表名相同,扩展名分别为.frm(存储表定义)、.MYD(存储数据)、.MYI(存储索引) 

    3.MEMORY  存储引擎

    1、不支持事务、不支持外键

    2、将数据存储在内存中,访问速度非常快

    3、支持HASH和BTREE索引,默认使用hash索引

    4、每个memory表只对应一个格式是.frm的磁盘文件

    相关文章

      网友评论

          本文标题:mysql数据库各存储引擎及区别

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