MySQL存储引擎介绍
MySQL之存储引擎html
本节目录mysql
首先肯定一点,存储引擎的概念是MySQL里面才有的,不是全部的关系型数据库都有存储引擎这个概念,后面咱们还会说,可是如今要肯定这一点。 linux
在讲清楚什么是存储引擎以前,咱们先来个比喻,咱们都知道录制一个视频文件,能够转换成不一样的格式,例如mp4,avi,wmv等,而存在咱们电脑的磁盘上也会存在于不一样类型的文件系统中如windows里常见的ntfs、fat32,存在于linux里常见的ext3,ext4,xfs,可是,给咱们或者用户看懂实际视频内容都是同样的。直观区别是,占用系统的空间大小与清晰程度可能不同。
那么数据库表里的数据存储在数据库里及磁盘上和上述的视频格式及存储磁盘文件的系统格式特征相似,也有不少种存储方式。
可是对于用户和应用程序来讲一样一张表的数据,不管用什么引擎来存储,用户可以看到的数据是同样的。不一样储引擎存取,引擎功能,占用空间大小,读取性能等可能有区别。说白了,存储引擎就是在如何存储数据、提取数据、更新数据等技术方法的实现上,底层的实现方式不一样,那么就会呈现出不一样存储引擎有着一些本身独有的特色和功能,对应着不一样的存取机制。
由于在关系数据库中数据的存储是以表的形式存储的,因此存储引擎也能够称为表类型(即:对表的存储、操做等的实现方法不一样),表是什么,表本质上就是磁盘上的文件。
其实MySQL支持多种存储引擎,每种引擎有着一些本身独特的功能,用户在使用的时候,能够根据本身的业务场景来使用不一样的存储引擎,其中MySQL最经常使用的存储引擎为:MyISAM和InnoDB。
在详细介绍这些存储引擎以前,咱们先来看看MySQL的整个工做流程,看一下存储引擎在哪里,MySQL都作了哪些事情。
看下图:这是我在MySQL官方手册上拿下来的(手册你若是可以玩好,未来你就能作一个NB的DBA~~~)
sql
英文版的看着很难受啊超哥,好好好,给你来个中文的,看下图:数据库
来,看每一个部分的解释,看下图:vim
搞明白整个过程以后,咱们来细说一下这些存储引擎,看下一节~~~windows
前面咱们对MySQL进行操做的时候并无指定存储引擎,为何还能用呢,没有指定还能用,说明什么,说明MySQL默认有一个存储引擎,我记得MySQL5.5以前,默认的存储引擎是MyISAM,以后都改成InnoDB了,咱们的重点就是这个InnoDB,也是公司中最经常使用的、最好用的引擎,可是仍是一些公司在用MyISAM引擎,除了历史缘由以外,还有MyISAM的效率比InnoDB高一点,InnoDB在这方面作了不少优化,效率已经和MyISAM差很少了,可是InnoDB引擎还有好多其余的NB的功能,下面咱们就介绍几种存储引擎。post
首先看一下我们的默认存储引擎:性能
不一样的引擎表明着不一样的存取机制,那么有哪些引擎呢,链接进入mysql以后,查看MySQL支持的全部存储引擎:学习
一、show engines;#查看MySQL全部的引擎,
二、show variables like "storage_engine%";查看当前正在使用的引擎
注意:在存储大文件的时候,能够存到数据库,可是尽可能别直接存到数据库里面,会影响数据库的效率,咱们就存文件的路径、地址,用户想要这个大文件,咱们能够到对应的路径下取读取这个文件给用户。
几种经常使用引擎介绍
1. MyISAM引擎




2. InnoDB引擎




总说事务,到底啥事事务?咱们看看解释:

在介绍上面两个引擎中涉及的两个概念(OLTP和OLAP)的介绍
参考文章:https://blog.csdn.net/zhangzheng0413/article/details/8271322/
3.其余引擎的介绍

一、建立表时指定引擎
create table innodb_t2(id int)engine=innodb;
二、在配置文件中指定默认的存储引擎
linux:vim /etc/my.cnf windows:my.ini文件 [mysqld] default-storage-engine=INNODB #配置默认引擎,如今用的mysql默认基本都是InnoDB,因此其实均可以不用配置了 innodb_file_per_table=1 #表示独立表空间存储,能够不写
三、不一样引擎在建立表的时候生成文件的不一样
建立四个表,分别使用innodb,myisam,memory,blackhole存储引擎,进行插入数据测试
#下面是使用四个不一样的引擎来建立的表
create table t1(id int)engine=innodb; create table t2(id int)engine=myisam; create table t3(id int)engine=memory; create table t4(id int)engine=blackhole;
经过四种引擎来建立的表,咱们对照着其生成的文件来看一下区别,看下图:
关于上面的文件做用介绍:

在Oracle 和SQL Server等全部数据存储管理机制都是同样的。而MySql数据库提供了多种存储引擎。用户能够根据不一样的需求为数据表选择不一样的存储引擎,用户也能够根据本身的须要编写本身的存储引擎。
Oracle中不存在引擎的概念,数据处理大体能够分红两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、平常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操做,侧重决策支持,而且提供直观易懂的查询结果。
关于MySQL的存储引擎大概就说这么多吧~~~有兴趣或者有基础的同窗,能够多去学一下MySQL官方手册~~收获会有不少~~~那么咱们就继续回到咱们的数据表操做去学习吧~~~