温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL 数据库中MyISAM 和 InnoDB 的区别

发布时间:2020-07-23 22:03:28 来源:网络 阅读:694 作者:DemoHA 栏目:数据库

首先要明白,在MySQL数据库忠中的存储引擎是基于表的,而不是基于数据库的。


讲述两者区别:

    InnoDB 存储引擎,主要面向 OLTP(Online Transaction Processing,在线事务处理)方面的应用,是第一个完整支持 ACID 事务的存储引擎(BDB 第一个支持事务的存储引擎,已经停止开发)。

    特点:

行锁设计、支持外键;

支持类似于 Oracle 风格的一致性非锁定读(默认情况下读取操作不会产生锁);

    InnoDB 将数据放在一个逻辑的表空间中,由 InnoDB 自身进行管理。从MySQL4.1 版本开始,可以将每个 InnoDB 存储引擎的表单独存放到一个独立的ibd 文件中;

    InnoDB 通过使用 MVCC(多版本并发控制:读不会阻塞写,写也不会阻塞读)来获得高并发性,并且实现了 SQL 标准的 4 种隔离级别(默认为 REPEATABLE 级别);

    InnoDB 还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能;

    InnoDB 采用了聚集(clustered)的方式来存储表中的数据,每张标的存储都按主键的顺序存放(如果没有显式的在建表时指定主键,InnoDB 会为每一行生成一个 6 字节的 ROWID,并以此作为主键);

    InnoDB 表会有三个隐藏字段:除了上面提到了 6 字节的 DB_ROW_ID 外,还有6 字节的B_TX_ID(事务 ID)和 7 字节的 DB_ROLL_PTR(指向对应回滚段的地址)。这个可以通过 innodb monitor 看到;

    MyISAM 存储引擎是 MySQL 官方提供的存储引擎,主要面向OLAP(Online Analytical Processing,在线分析处理)方面的应用。

特点:

    不支持事务,支持表所和全文索引。操作速度快;

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

    MySQL 数据库只缓存其索引文件,数据文件的缓存交给操作系统本身来完成;

    MySQL5.0 版本开始,MyISAM 默认支持 256T 的单表数据;


最后总结一下:

    1、InnoDB支持事物,而MyISAM不支持事物;

    2、InnoDB支持行级锁,而MyISAM支持表级锁;

    3、InnoDB支持MVCC, 而MyISAM不支持;

    4、InnoDB支持外键,而MyISAM不支持;

    5、InnoDB不支持全文索引,而MyISAM支持。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI