mysql中InnoDB和MyISAM对比及索引原理区别
MyISAM:不支持事务
MyISAM是最常用的存储引擎,但不是默认使用的。
MyISAM采用三个文件组成一张表:
- xxx.frm存储格式的文件
- xxx.MYD存储表中数据的文件
- xxx.MYI存储表中索引的文件
优点:可被压缩,节省存储空间,并且可以转换为只读表,提高检索效率
缺点:不支持事务
InnoDB
优点:支持事务,行级锁,外键等。这使数据的安全得到了保障
表的结构存储在xxx.frm文件中
数据存储在tablespace这样的表空间中(逻辑概念),无法被压缩,无法转换成只读
InnoDB存储引擎在MySQL数据库崩溃之后提供自动恢复机制。
InnoDB支持级联删除和级联更新(直接删父,连带子没了)
-----------------------------------------------------------------------------------------------分割线-(上面简单描述)---------------------------------------------------------------------------------------------------------------------------------------
InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了
1、事务和外键
InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能
MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择
2、全文索引
Innodb不支持全文索引,如果一定要用的话,最好使用sphinx等搜索引擎。myisam对中文支持的不是很好,不过新版本的Innodb已经支持了
3、锁
mysql支持三种锁