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 是堆表, 索引组织表和堆表的区别要熟悉