Mysql提供了多个不同的存储引擎,包括处理事务安全和处理非事务安全的引擎。在整个服务器中不需要使用同一种存储引擎。
Mysql5.5以后默认使用InnoDB存储引擎,之前默认引擎是MyISAM。
MyISAM
不支持事务,不支持外键,访问速度快,以SELECT为主的应用可以使用这个引擎创建表。
InnoDB
支持事务,写的处理效率差一些,会占用更多的磁盘空间以保留数据和索引。支持行级锁。Mysq支持外键的引擎只有InnoDB,创建索引时,父子表必须有对应的索引。
InnoDB和MyISAM区别
InnoDB不保存表的具体行数,执行count(*)时需要扫描全表,而MYISAM用一个变量保存整个表的行数,执行count(*)时只需读出变量即可。
InnoDB的最小锁粒度是行锁,MyISAM最小锁粒度是表锁,一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞。
MYISAM支持全文(FULLTEXT)索引,InnoDB不支持,可以使用插件sphin支持全文索引。
MyISAM允许没有任何索引和主键的表存在,索引都是保存行的地址。InnoDB如果没有设定主键或非空唯一索引,会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附件索引保存的是主索引的值。
索引结构:https://blog.csdn.net/qq_35642036/article/details/82820178