暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【入门级】MySQL存储引擎简介

睿江云计算 2018-09-10
211

MySQL数据库的存储引擎是插件式的,本身MySQL已经提供了一系列的存储引擎,本文主要是介绍自带引擎的一些特性,有个需要注意的是,存储引擎是基于表格的,而不是数据库,就是说不能说某个数据库是什么引擎,而是某张表是什么存储引擎。

数据库事务

在介绍引擎之前,先介绍数据库里面一个很核心的概念,就是事务。一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:

1.为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。

2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。

数据库事务拥有以下四个特性,习惯上被称之为ACID特性:

原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。

以上部分内容来自于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存储引擎


文章转载自睿江云计算,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论