MySQL myisam与innodb的区别,至少5点

(1)问5点不同

  • 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 是堆表

(2)innodb引擎的4大特性

  • 1.插入缓冲(insert buffer)
  • 2.二次写(double write)
  • 3.自适应哈希索引(ahi)
  • 4.预读(read ahead)

(3)各种不同 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)支持新建 innodb tablespace,并可以在其中创建多张表
  • (5)磁盘临时表采用 innodb 存储,并且存储在 innodb temp tablespace 里面,以前是 myisam 存储
  • (6)透明表空间压缩功能

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

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

(5)2 者的索引的实现方式

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