最新MySQL中最新MyISAM与InnoDB的详细区别

分类:Database, 发布于 2019-09-20,浏览(124),评论(0)

一、不同点

1. InnoDB支持事物,而MyISAM不支持

2. InnoDB支持行级锁,而MyISAM支持表级锁

3. InnoDB支持MVCC, 而MyISAM不支持

4. InnoDB支持外键,而MyISAM不支持

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

6. InnoDB不能通过直接拷贝表文件的方法拷贝表到另外一台机器, MyISAM支持

7. InnoDB表支持多种行格式, MyISAM不支持

8. InnoDB是索引组织表, MyISAM是堆表


二、InnoDB引擎的4大特性

1. 插入缓冲(insert buffer)

2. 二次写(double write)

3. 自适应哈希索引(ahi)

4. 预读(read ahead)


三、各种不同 MySQL版本的InnoDB的改进

MySQL5.6 下 InnoDB 引擎的主要改进:

1. online DDL

2. memcached NoSQL 接口

3. transportable tablespace( alter table discard/import tablespace)

4. MySQL 正常关闭时,可以 dump 出 buffer pool 的( space, page_no),重启时 reload,加快预热速度

5. 索引和表的统计信息持久化到 mysql.innodb_table_stats 和mysql.innodb_index_stats,可提供稳定的执行计划

6. Compressed row format 支持压缩表


MySQL 5.7 InnoDB引擎主要改进

1. 修改 varchar 字段长度有时可以使用 online DDL

2. Buffer pool 支持在线改变大小

3. Buffer pool 支持导出部分比例

4. 支持新建 InnoDBtablespace,并可以在其中创建多张表

5. 磁盘临时表采用 InnoDB 存储,并且存储在 InnoDB temp tablespace 里面,以前是 MyISAM 存储

6. 透明表空间压缩功能


四、2者select  count(*)哪个更快,为什么

MyISAM更快,因为MyISAM内部维护了一个计数器,可以直接调取。


五、2 者的索引的实现方式

都是 B+树索引, InnoDB是索引组织表, MyISAM是堆表, 索引组织表和堆表的区别要熟悉

评论: