存储引擎是在创建表的时候指定的,当没有指定的时候有默认值,默认值随mysql版本变化。mysql有20多个存储引擎,常用的也就几个。InnoDB、MyISAM、MEMORY、ARCHIVE
InnoDB
mysql5.5版本以后,InnoDB是默认的存储引擎。
优点
灾难恢复性好、支持4种级别的事务、使用行锁、实现缓冲管理、支持外键、支持热备份。
MyISAM
MyISAM是mysql5.0/5.1版本的默认存储引擎
特性
表级锁,并发性差。
无事务支持
无外键支持
只缓冲的索引没有缓存数据
等等等等
如何选择存储引擎
是否需要事务
是否为高并发,InnoDB实现行锁(锁粒度小),MyISAM实现表锁(锁粒度大),所以InnoDB并发相对高
索引
是否需要外键
高效缓存数据
是否需要热备份
........
从上面的特性上看,一般直接所有的都使用InnoDB就好了。当遇到了读瓶颈要做读写分离的时候,可以配合MyISAM一起使用;或者是业务不是要事务不需要外键不需要高并发不需要热备份等等的时候,可以用MyISAM。其他情况下直接使用InnoDB就没有多大问题。
tip
虽说mysql5.5版本以后默认的存储引擎是InnoDB,但使用某些第三方mysql客户端(像navcat)创建表的时候,默认指定的存储引擎就是MyISAM。楼主就吃过这个亏