
MySQL数据库的存储引擎是插件式的,本身MySQL已经提供了一系列的存储引擎,本文主要是介绍自带引擎的一些特性,有个需要注意的是,存储引擎是基于表格的,而不是数据库,就是说不能说某个数据库是什么引擎,而是某张表是什么存储引擎。
数据库事务
∨
在介绍引擎之前,先介绍数据库里面一个很核心的概念,就是事务。一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
1.为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
数据库事务拥有以下四个特性,习惯上被称之为ACID特性:
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
以上部分内容来自于wiki
https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1
InnoDB存储引擎
∨
从MySQL数据库5.5.8版本开始,默认存储引擎是InnoDB,InnoDB一个最亮丽的特点就是支持事务,这个是以前旧的默认引擎MyISAM所不具备的。除此之外还有一些行锁设计、支持外键、并发控制等特性。在InnoDB里面,表的存储都是按照主键的顺序进行存放,如果没有显式地显示定义主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键。
InnoDB提供了4种事务隔离级别,分别是:未提交读(Read uncommitted)、已提交读(Read committed)、可重复读(Repeatable read)、可串行化(SERIALIZABLE)。我们会在以后专门针对InnoDB介绍的章节再详细讲解事务隔离方面的知识点。
MyISAM存储引擎
∨
在MySQL 5.5.8以前的版本默认存储引擎是MyISAM,但是MyISAM不支持事务、行锁等特性。MyISAM存储引擎表有MYD和MYI两个文件组成,MYD用来存放数据内容,MYI用来存储索引内容。总体来讲,MyISAM适合那些对数据管理比较简单的场景。
Memory存储引擎
∨
Memory存储引擎(以前叫HEAP存储引擎)顾名思义,这个引擎是把存储内容放在内存里面的,如果数据库或者服务器崩溃了,那么内存数据都会丢失。它只适合用来存放一些临时非重要数据。
Federated存储引擎
∨
Federated这个引擎比较有意思,它并不存放数据,而是指向一台远程MySQL数据库上的表,这个特性比较适合用来做数据库的网关或者接入服务,防止客户端可以直连到真正的数据库。
Maria存储引擎
∨
Maria引擎的开发者是MySQL的创始人之一的Michael Widenius,它设计的目标是用来替换原有的MyISAM引擎,可以看成是MyISAM的后续版,Maria引擎的特点是支持缓存数据和索引文件、支持事务、行锁等功能。我们现在谈及的MySQL其实有两个版本,一个是传统先后被SUN、Oracle收购的版本,一个是原MySQL创始人Michael Widenius所开发的Maria版本,在一些linux发行版中当安装MySQL服务时,虽然名字还是叫MySQL但是安装的是Maria版本,具体可以自行去查阅关于MySQL和Maria之间的关系。
下期预告
InnoDB存储引擎





