# 存储引擎

TIP

1、Mysql提供了数据存储的接口,引擎就是这些接口各种各样的实现方案

2、Mysql有好几种存储引擎,各有特点

3、存储引擎不是针对数据库的,是以表为单位的,如果数据库有10张表,这10张表想用哪个引擎都随便

进入到Mysql数据库下

show ENGINES;

列表如下

Engine Support Comment Transactions XA Savepoints
FEDERATED NO Federated MySQL storage engine
MRG_MYISAM YES Collection of identical MyISAM tables NO NO NO
MyISAM YES MyISAM storage engine NO NO NO
BLACKHOLE YES /dev/null storage engine (anything you write to it disappears) NO NO NO
CSV YES CSV storage engine NO NO NO
MEMORY YES Hash based, stored in memory, useful for temporary tables NO NO NO
ARCHIVE YES Archive storage engine NO NO NO
InnoDB DEFAULT Supports transactions, row-level locking, and foreign keys YES YES YES
PERFORMANCE_SCHEMA YES Performance Schema NO NO NO

常用的也就InnoDB、MyISAM

InnoDB是上面这些引擎中,唯一支持事务的,并且是行级锁,大多数人也都用这个,MyISAM不支持事务,而且还是表级锁,插入一条数据时,其他人再想向这表里插,就都得排队等着

关于选择InnoDB还是MyISAM并不是绝对的,常见的说法就是

如果写操作多就用InnoDB,读操作多就用MyISAM