MySQL教程学习之面试题02_MySQL中myisam与innodb的区别
一、myisam与innodb不同
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教程中MySQL正常关闭时,可以 dump 出 buffer pool 的( space, page_no),重启时 reload,加快预热速度
( 5) 关于索引和表的统计信息持久化到 mysql.innodb_table_stats 和mysql.innodb_index_stats,可提供稳定的执行计划
( 6) Compressed row format 支持压缩表
MySQL学习重点:MySQL 5.7 innodb 引擎主要改进
( 1) 修改 varchar 字段长度有时可以使用 online DDL
( 2) Buffer pool 支持在线改变大小
( 3) Buffer pool 支持导出部分比例
( 4) 支持新建 innodb tablespace,并可以在其中创建多张表
( 5) 磁盘临时表采用 innodb 存储,并且存储在 innodb temp tablespace 里面,以前是 myisam 存储
( 6) 透明表空间压缩功能
四、myisam与innodb的select count(*)哪个更快,为什么
myisam更快,因为myisam内部维护了一个计数器,可以直接调取。
五、myisam与innodb的索引的实现方式
都是 B+树索引, Innodb 是索引组织表, myisam 是堆表, 索引组织表和堆表的区别要熟悉