MySQL存储引擎介绍

MySQL之存储引擎

本节目录

一 存储引擎解释

  首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点。  

  在讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如mp4,avi,wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs、fat32,存在于linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的。直观区别是,占用系统的空间大小与清晰程度可能不一样。
那么数据库表里的数据存储在数据库里及磁盘上和上述的视频格式及存储磁盘文件的系统格式特征类似,也有很多种存储方式。

  但是对于用户和应用程序来说同样一张表的数据,无论用什么引擎来存储,用户能够看到的数据是一样的。不同储引擎存取,引擎功能,占用空间大小,读取性能等可能有区别。说白了,存储引擎就是在如何存储数据、提取数据、更新数据等技术方法的实现上,底层的实现方式不同,那么就会呈现出不同存储引擎有着一些自己独有的特点和功能,对应着不同的存取机制。
  因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即:对表的存储、操作等的实现方法不同),表是什么,表本质上就是磁盘上的文件。

  其实MySQL支持多种存储引擎,每种引擎有着一些自己独特的功能,用户在使用的时候,可以根据自己的业务场景来使用不同的存储引擎,其中MySQL最常用的存储引擎为:MyISAM和InnoDB。
在详细介绍这些存储引擎之前,我们先来看看MySQL的整个工作流程,看一下存储引擎在哪里,MySQL都做了哪些事情。

  看下图:这是我在MySQL官方手册上拿下来的(手册你如果能够玩好,将来你就能做一个NB的DBA~~~)

      

  英文版的看着很难受啊超哥,好好好,给你来个中文的,看下图:

      

  来,看每个部分的解释,看下图:

      

  搞明白整个过程之后,我们来细说一下这些存储引擎,看下一节~~~

    

二 MySQL存储引擎分类

  前面我们对MySQL进行操作的时候并没有指定存储引擎,为什么还能用呢,没有指定还能用,说明什么,说明MySQL默认有一个存储引擎,我记得MySQL5.5之前,默认的存储引擎是MyISAM,之后都改为InnoDB了,我们的重点就是这个InnoDB,也是公司中最常用的、最好用的引擎,但是还是一些公司在用MyISAM引擎,除了历史原因之外,还有MyISAM的效率比InnoDB高一点,InnoDB在这方面做了很多优化,效率已经和MyISAM差不多了,但是InnoDB引擎还有好多其他的NB的功能,下面我们就介绍几种存储引擎。

  首先看一下咱们的默认存储引擎:

  

  

  不同的引擎代表着不同的存取机制,那么有哪些引擎呢,连接进入mysql之后,查看MySQL支持的所有存储引擎:

    1、show engines;#查看MySQL所有的引擎,

      

    2、show variables like "storage_engine%";查看当前正在使用的引擎

      

    注意:在存储大文件的时候,可以存到数据库,但是尽量别直接存到数据库里面,会影响数据库的效率,我们就存文件的路径、地址,用户想要这个大文件,我们可以到对应的路径下取读取这个文件给用户。

  

  几种常用引擎介绍

      1. MyISAM引擎  


MyISAM引擎特点

MyISAM引擎适用的生产业务场景

MyISAM引擎调优精要

      


关于MyISAM的一些其他介绍

      2. InnoDB引擎


InnoDB引擎特点

InnoDB引擎适用的生产业务场景

InnoDB引擎调优精要

关于InnoDB的一些其他介绍

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


事务的介绍及特性

      

      在介绍上面两个引擎中涉及的两个概念(OLTP和OLAP)的介绍

      参考文章:https://blog.csdn.net/zhangzheng0413/article/details/8271322/

        

      3.其他引擎的介绍


其他引擎简单介绍

三 存储引擎的使用

  1、创建表时指定引擎

create table innodb_t2(id int)engine=innodb;

  2、在配置文件中指定默认的存储引擎

linux:vim /etc/my.cnf   windows:my.ini文件
[mysqld]
default-storage-engine=INNODB #配置默认引擎,现在用的mysql默认基本都是InnoDB,所以其实都可以不用配置了
innodb_file_per_table=1 #表示独立表空间存储,可以不写

  3、不同引擎在创建表的时候生成文件的不同

    创建四个表,分别使用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官方手册~~收获会有很多~~~那么我们就继续回到我们的数据表操作去学习吧~~~

{MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用的更多相关文章

  1. 网络存储技术介绍(2) ( based on zt)

    http://www.educity.cn/tx/429084.html 互联网技术DAS.NAS和SAN存储方案的比较 按照设备位置和接入方式,磁盘存储可以分为内置存储和外挂存储,外挂存储又分为直连 ...

  2. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  3. [转]MySQL主从复制原理介绍

    MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以 ...

  4. 第六阶段·数据库MySQL及NoSQL实践第1章·章节一MySQL数据库

    01 课程介绍 02 数据库管理系统介绍 03 MySQL安装方式介绍及源码安装 04 MySQL安装后的基本配置 05 MySQL体系结构-服务器.客户端模型 06 MySQL体系结构-实例.连接层 ...

  5. 「mysql优化专题」高可用性、负载均衡的mysql集群解决方案(12)

    一.为什么需要mysql集群? 一个庞大的分布式系统的性能瓶颈中,最脆弱的就是连接.连接有两个,一个是客户端与后端的连接,另一个是后端与数据库的连接.简单如图下两个蓝色框框(其实,这张图是我在悟空问答 ...

  6. mysql 存储引擎介绍

    一  存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻, ...

  7. MySQL的常见存储引擎介绍与参数设置调优

    MySQL常用存储引擎之MyISAM 特性: 1.并发性与锁级别 2.表损坏修复 check table tablename repair table tablename 3.MyISAM表支持的索引 ...

  8. 数据库 --> MySQL存储引擎介绍

    MySQL存储引擎介绍 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然 ...

  9. MySQL的常见存储引擎介绍与参数设置调优(转载)

    原文地址:http://www.cnblogs.com/demon89/p/8490229.html MySQL常用存储引擎之MyISAM 特性: 1.并发性与锁级别 2.表损坏修复 check ta ...

随机推荐

  1. EOF多行写入文件防止变量替换

    问题描述 对多个变量及多行输出到文件,存在变量自动替换,当使用cat<<EOF不想对内容进行变量替换.命令替换.参数展开等 问题解决 转义特殊字符如 $ `等 一.对 $·\ 进行转义 c ...

  2. ISO镜像安装Ubuntu 13.04 64位,启动菜单制作

    1.将光盘镜像中的vmlinuz.efi.initrd.lz,和镜像本身(ubuntu....iso) 三个文件复制到U盘根目录下.如果下面的方法没成功启动,你可能要把U盘格式化为USB-HDD FA ...

  3. Visual Studio开发工具升级注意事项

    由于前几年公司开发的系统使用的开发工具版本不统一,现在后期维护升级在开发人员的电脑上要同时安装好几个不同的开发工具, 比如VS2008,VS2010,VS2012,甚至还有用VS2003开发的接口之类 ...

  4. php验证码--图片

    这里我们介绍图片验证码的制作,有关字符验证码能够參考下面文章: 点击打开链接 图片验证码的制作分三步: 1.制作图片库 2.随机选取一张图片 3.输出图片内容 代码例如以下(这里为了方便我直接用的本地 ...

  5. Docker 使用Docker知识简易部署一个LNMP平台

    1.自定义网络 docker network create lnmp 2.创建Mysql数据库容器(这里我们首先得创建一个mysql-vol数据卷) docker volume create mysq ...

  6. Socket网络编程--聊天程序(6)

    这一小节将增加一个用户的结构体,用于保存用户的用户名和密码,然后发给服务器,然后在服务器进行判断验证.这里就有一个问题,以前讲的就是发送字符串是使用char类型进行传输,然后在服务器进行用同样是字符串 ...

  7. select 语法

    select 语句主要语法: SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ ...

  8. Python3多线程之间的执行顺序问题

    [本文出自天外归云的博客园] 一个多线程的题:定义三个线程ID分别为ABC,每个线程打印10遍自己的线程ID,按ABCABC……的顺序进行打印输出. 我的解法: from threading impo ...

  9. mxnet:基础知识和一个简单的示例

    NDArray与NumPy的多维数组类似,但NDArray提供了更多的功能:GPU和CPU的异步计算:自动求导.这使得NDArray能更好地支持机器学习. 初始化 from mxnet import ...

  10. 【Unity】讯飞语音识别SDK

    1.进入讯飞官网,注册帐号,进入控制台,创建新应用UnityXunfeiDemo,平台选Android.在当前应用这点下载SDK,添加AI能力(添加新服务),选择语音听写,即可下载安卓SDK(下称讯飞 ...