表存储引擎 InnoDB和MyISAM的区别

  1. InnoDB⽀持事务,MyISAM不⽀持。
  2. .MyISAM适合查询以及插⼊为主的应⽤,InnoDB适合频繁修改以及涉及到安全性较⾼的应⽤。
  3. InnoDB⽀持外键,MyISAM不⽀持。
  4. 从MySQL5.5.5以后,InnoDB是默认引擎。
  5. MyISAM⽀持全⽂类型索引,⽽InnoDB不⽀持全⽂索引。
  6. InnoDB中不保存表的总⾏数,select count(*) from table时,InnoDB需要扫描整个表计算有多少⾏,但MyISAM只需简单读出保存好的总⾏数即可。注:当count(*)语句包含where条件时MyISAM也需扫描整个表。
  7. 对于⾃增⻓的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段⼀起建⽴联合索引。
  8. 清空整个表时,InnoDB是⼀⾏⼀⾏的删除,效率⾮常慢。MyISAM则会重建表。MyisAM使⽤delete语句删除后并不会⽴刻清理磁盘空间,需要定时清理,命令:OPTIMIZE table dept;
  9. InnoDB⽀持⾏锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’
  10. Myisam创建表⽣成三个⽂件:.frm 数据表结构 、 .myd 数据⽂件 、.myi 索引⽂件,Innodb只⽣成⼀个 .frm⽂件,数据存放在ibdata1.log
  11. 现在⼀般都选⽤InnoDB,主要是MyISAM的全表锁,读写串⾏问题,并发效率锁表,效率低,MyISAM对于读写密集型应⽤⼀般是不会去选⽤的。
  12. 应用场景:
  • MyISAM不⽀持事务处理等⾼级功能,但它提供⾼速存储和检索,以及全⽂搜索能⼒。如果应⽤中需要执⾏⼤量的SELECT查询,那么MyISAM是更好的选择。
  • InnoDB⽤于需要事务处理的应⽤程序,包括ACID事务⽀持。如果应⽤中需要执⾏⼤量的INSERT或UPDATE操作,则应该使⽤InnoDB,这样可以提⾼多⽤户并发操作的性能。

你可能感兴趣的:(mysql,php)