用的不多,面试常考。
存储引擎是mysql中的一个专用术语,实质为表存储数据的方式。存储引擎不同,表存储数据的方式不同。
一,指定引擎:
如在建表语句的末尾,即括号外写上:
ENGINE=InnoDB DEFAULT CHARSET=utf8
ENGINE指定引擎,CHARSET指定编码方式。InnoDB和utf8其实是每个表默认的引擎和编码方式。
二,mysql常用存储引擎
查看mysql支持的存储引擎,与版本有关:
show engines;
常用引擎:
2.1 MyISAM
该引擎管理的表的主要特征是使用三个文件管理一个表:(1)格式文件(mytable.frm),存储表结构的定义;(2)数据文件(mytable.MYD),存储表行的数据;(3)索引文件(mytable.MYI),存储表上的索引。表可被转换为压缩、只读表节省空间。
Notations:主键和加有unique修饰的数据会自动生成索引。
2.2 InnoDB:
mysql中默认的存储引擎。它支持事务,支持数据库崩溃后自动恢复机制,特点是非常安全。主要特点:(1)每个InnoDB表在数据库目录中以.frm文件格式表示;(2)表空间tablespace用于存储表的内容;(3)提供一组记录事务的日志文件;(4)用COMMIT、SAVEPOINT以及ROLLBACK支持事务处理。
2.3 MEMORY:
使用MEMORY的表,数据存储在内存中,每行的长度固定,因此该引擎很快。主要特点:(1)也是在数据库目录以.frm文件格式表示;(2)表数据和索引存储在内存中;(3)表级锁机制;(4)不能包含TEXT和BLOB字段。优点是效率高,缺点是不安全。