前文索引:Mysql基础-数据库操作
说明:Mysql服务器提供了丰富的存储引擎供我们选择,并且给我们提供了足够的可配性,完全可以根据实际需要实现自定义。
Mysql 的存储引擎介绍
在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库。而在设计表的时候,我们都会关注一个问题,使用什么存储引擎?存储引擎?存储引擎?,那什么是存储引擎?
什么是存储引擎?
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。
这些不同的技术以及配套的相关功能在 MySQL中被称作存储引擎(也称作表类型)。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很多种类型的存储引擎(或者说不同的表类型),我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。
Mysql存储引擎分类:
FEDERATED -- 用于远程表的存储引擎
MERGE -- 用于管理由多个MyISAM表构成的表集合
MyISAM -- 主要的非事务处理存储引擎
BLACKHOLE -- 这种存储引擎会丢弃写操作,读操作时返回空内容
CSA -- 这种存储引擎在存储数据时,会以逗号作为数据项之间的分隔符
MEMORY --所有内容存储与内存中
ARCHIVE -- 用于数据存档的引擎(行被插入后就不能再此修改)
InnoDB -- 具备外键支持功能的事务处理引擎
NDB -- Mysql集群专用存储引擎
PERFORMANCE_SCHEMA -- 5.5开始提供,主要用于PERFORMANCE_SCHEMA数据库,用户不能自己创建PERFORMANCE_SCHEMA引擎的表
注意:
1、有几种存储引擎的名字还有别名,例如,MRG_MyISAM和NDBCLUSTER分别是MERGE和NDB的别名。MEMORY和InnoDB在早期分别称为HEAP和Innobase,虽然后面两个别名还可以被识别,但已经废弃了。
2、Mysql服务器在一开始都是把所有的存储引擎编译在内部的,以供后期使用,现在,它改变了这种方式,而是以一种“可插拔”的架构提供,可以让我们选择性的加载。
查看当前数据库可用存储引擎:
语法:show engines;
或者:select * from information_schema.ENGINES