[TOC] ## 什么是存储引擎? 关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。Mysql的存储引擎有:MyISAM,InnoDB,BDB,Memory,Merge,Archive,Federated,CSV等等。 ## MyISAM(常用) 它不支持事务,也不支持外键,查询操作性能强悍,索引压缩,各平台间文件通用,支持表级锁,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为: frm(存储表定义) MYD(MYData,存储数据) MYI(MYIndex,存储索引) 数据文件和索引文件可以放置在不同的目录,平均分配IO,获取更快的速度 ## InnoDB(常用) 提供更高级的事务处理及外键约束,支持行级锁,如果有事务需求 比如说金融股票类项目使用InnoDB存储引擎。基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB ## 区别 MySQL支持同一时间多个用户访问数据表,MyISAM引擎是表级锁,所以多个用户进行写操作会带来性能下降,InnoDB采用行级锁,可以支持更大的并发操作