存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。
Mysql常用的存储引擎有三种:InnoDB、Myisam、Memory
InnoDB是mysql 5.5之后的默认存储引擎
特点:
DML操作支持事务,遵循ACID模型,支持行级锁(提高并发访问性能),支持外键约束(保证数据完整性和正确性)
文件:
xxx.ibd: xx代表的是表名, innoDB引擎的每张表都会对应这样-个表空间文件, 存储该表的表结构(frm、 sdi) 、数据和索引
参数: innodb_ file_ per_table
InnoDB的存储结构:
MyISAM是mysql早期默认的存储引擎
特点:
不支持事务,不支持外键,不支持行锁,支持表锁,访问速度快
文件:
xxx.sdi:存储表结构信息
xxx.MYD:存储数据
xxx.MYI:存储索引
Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
特点:
内存存放、hash索引(默认)
文件:
xxx.sdi:存储表结构信息
其实根据Memory引擎的描述和特点相信大家会想起一个非常热门的非关系型数据库,没错,就是redis,目前大家会使用redis替代Memory
在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组
合。