MySQL常用存储引擎详解

  • 一、什么是存储引擎
  • 二、掌握存储引擎的重要性
  • 三、MySQL常用的存储引擎有哪些
  • 四、存储引擎的特性
    • 1、InnoDB
    • 2、MyISAM
    • 3、MEMORY
    • 4、ARCHIVE
  • 总结

一、什么是存储引擎

存储引擎是数据库的核心,对于mysql来说,存储引擎是以插件的形式运行的。虽然mysql支持种类繁多的存储引擎,但是常用的就那么几种。

二、掌握存储引擎的重要性

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。

当面试官问道如何优化数据库的时候还在回答添加索引和分库分表?
那么恭喜你,上一个来面试的小伙伴也是这么说的。

数据库中不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,不同的存储引擎有着不同的特性,无从判断熟弱熟强,因为它们在各自适合的应用场景下都有着自己不可撼动的地位,了解这些存储引擎的不同特性才能设计出更合理高效的数据库。

三、MySQL常用的存储引擎有哪些

MySQL 支持多种类型的数据库引擎,可分别根据各个引擎的功能和特性为不同的数据库处理任务提供各自不同的适应性和灵活性。

MySQL中的存储引擎有:InnoDBMyISAMMRG_MyISAMMemoryMergeArchiveFederatedCSVBLACKHOLEPERFORMANCE_SCHEMAFEDERATED
其中最为常用的有:InnoDBMyISAMMemoryArchive

可以通过 SHOW ENGINES 语句来显示可用的数据库引擎和默认引擎。

博主的MySQL版本是5.7 。如图可见默认使用的存储引擎是InnoDB
(MySQL5.1.X之前的版本中,默认的存储引擎是MyISAM。MySQL数据库5.5.8版本开始,InnoDB存储引擎是默认的存储引擎)

四、存储引擎的特性

终于讲到正题,并不是故意扯那么多,而是这些最好都要知道,如果是直接空降过来的建议从头开始看起,当然,有一定数据库存储引擎功底的小伙伴除外。

在这只讲较为常用的几种存储引擎,虽然MySQL支持的存储引擎非常多,但常用的也就这么几种。

1、InnoDB

InnoDB,是MySQL的数据库引擎之一,现为MySQL的默认存储引擎。
InnoDB是为处理巨大数据量时的最大性能而设计,InnoDB支持事务能够保证高并发下数据的安全性和一致性,支持表锁和行锁(只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁),能够在高并发的情况下大大提升数据库的效率。
(如果还有不了解事务的小伙伴可以点击传送门翻阅博主之前数据库事务的相关文章)
InnoDB一定会有主键(如果不声明主键,程序会自动生成一个隐式字段作为主键)

InnoDB底层采用B+树来进行数据存储。MySQL innodb的主键索引是簇集索引,也就是索引的叶子节点存的是整个单条记录的所有字段值,不是主键索引的就是非簇集索引也称辅助索引,非簇集索引的叶子节点存的是主键字段的值。

回表是什么意思?
就是你执行一条sql语句,需要从两个b+索引中去取数据。举个例子:
表tbl有a,b,c三个字段,其中a是主键,b上建了索引,然后编写sql语句SELECT * FROM tbl WHERE a=1
这样不会产生回表,因为所有的数据在a的索引树中均能找到
而SELECT * FROM tbl WHERE b=1
这样就会产生回表,因为where条件是b字段,那么会去b的索引树里查找数据,但b的索引里面只有a,b两个字段的值,没有c,那么这个查询为了取到c字段,就要取出主键a的值,然后去a的索引树去找c字段的数据。查了两个索引树,这就叫回表。
Innodb的辅助索引存储的是主键值而不存数据所在的地址,需要通过主键值进行回表才能找到数据所在的内存地址

2、MyISAM

MyISAM是MySQL5.5版之前的默认数据库引擎,由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,随着业务的逻辑越来越复杂,对安全性与效率方面要求越来越高,MySQL也导入了InnoDB(另一种数据库引擎),以强化参照完整性与并发违规处理机制,后来就逐渐取代MyISAM。

MyISAM不支持事务,支持表锁,其安全方面与并发效率方面远不如InnoDB,但myism中b+树的叶子节点存储的是数据的内存地址,因此不需要进行回表,所有有读取更快的说法。

3、MEMORY

MEMORY是MySQL中一类非常特殊的存储引擎,与MySQL中其他的存储引擎不同的是MEMORY存储引擎是通过内存来进行存储的只支持表级锁,表级锁会成为MEMORY存储引擎的瓶颈。其它优点和缺点都非常明显。因为是通过内存来进行存储的,所以他的效率要远远高于其他存储引擎,也就是因为通过内存来进行存储,所以数据容易受到崩溃,硬件问题或断电的影响而导致全部数据丢失,因此只能将这些表用作临时工作区或从其他表中提取数据的只读缓存,或存储一些不怎么重要与可再生的数据。

4、ARCHIVE

ARCHIVE比较特别,这个引擎只允许插入和查询,不允许修改和删除。相当于拥有只读权限和写入权限,没有修改权限和删除权限。
ARCHIVE在存储的时候会对数据进行压缩,可能别的存储引擎几个G的数据,用ARCHIVE只需要几百兆就能存下。比较适合用来做日志记录等操作。

总结

1、Innodb引擎(Mysql的默认引擎):Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统,相比MyIASM引擎,Innodb修改快、支持事务、支持行锁,并发效率高,但插入、查询操作不如MyIASM。各有各的优点。

2、MyIASM引擎(原本Mysql的默认引擎):不提供事务的支持,也不支持行级锁和外键,对比InnoDB引擎,MyIASM插入快、查询快,但并发效率和安全性不及InnoDB。各有各的特长。

3、MEMORY引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高,断电则数据全部丢失。

4、ARCHIVE引擎:对数据进行压缩,只允许插入和查询操作,不允许修改和删除

MySQL常用存储引擎详解相关推荐

  1. mysql的存储引擎详解_Mysql存储引擎详解

    存储引擎的介绍 关系型数据库表是用来存储和组织信息的数据结构,可以将表理解为由行和列组成的表格. 由于表的类型不同,我们在实际开发过程中,就有可能需要各种各样的表,不同的表就意味着存储不同类型的数据, ...

  2. mysql的存储引擎详解_MySQL常见存储引擎详解

    通过执行show engines命令查看MySQL中支持哪些存储引擎 MySQL存储引擎属性对比 设置表的存储引擎的方法 在my.cnf配置文件中设置default-storage-engine参数表 ...

  3. Mysql存储引擎详解(MyISAM与InnoDB的区别)

    Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎     MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...

  4. MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL逻辑架构 1.逻辑架构图 基于下面的逻辑架构图,可以大致熟悉MySQL各个架构组件之间的协同工作关系. 很经典的C/S架构风格, ...

  5. MySQL常用存储引擎之Innodb

    在MYSQL5.5版本之后,具体是在5.58版本之后,InnoDB代替MYISAM称为MYSQL的默认存储引擎,说实话呢,是一个非常重要的事情,之前在使用MYSQL时,说别人使用InnoDB,而不用m ...

  6. InnoDB存储引擎详解

    存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎 . 文章目录 InnoDB存储引擎架构 实例 ...

  7. MySQL存储引擎详解(一)-InnoDB架构

    目录 前言 一.支持的存储引擎 二.InnoDB引擎 1.Buffer Pool 传统LUR算法 预读 预读失效 2.Log Buffer 3.Adaptive Hash Index 4.Change ...

  8. Mysql存储引擎详解

    1.InnoDB存储引擎 InnoDB是事物型数据库的首选引擎,支持事物安全表(ACID),支持行锁定和外键.Mysql5.5.5之后,InnoDB作为默认存储引擎,InnoDB主要特性有: (1)I ...

  9. mysql存储引擎简书_MySQL存储引擎详解

    一,基础 1,插件式存储引擎,允许第三方组织,根据其api来设计,很多功能需要依赖引擎支持,比如事务 2, 5.5以后默认为innodb,之前为myISAM,innodb支持事务,myISAM不支持 ...

最新文章

  1. mysql sql decode函数用法_oracle中的decode的使用介绍
  2. 我潜入清华神秘实验室,用脑机接口写了两句诗
  3. matlab二维画图函数汇总--论文,数学建模中使用
  4. 用华为eNSP模拟器配置Hybrid、Trunk和Access三种链路类型端口
  5. 2011计算机2级,全国计算机等级考试四合一过关训练:2级C语言程序设计(2011版)...
  6. REST 之 Spring 4 RESTful service
  7. 成功解决tensorflow.keras: AttributeError: ‘str‘ object has no attribute ‘decode‘
  8. Python高级特性:迭代器和生成器
  9. php 检测 变量是否设置,PHP中检测一个变量是否有设置的函数是什么?
  10. 数据库服务器修改地址,数据库服务器修改地址吗
  11. sql server计算日期到当前日期天数_Excel必学的7个计算日期间隔差的技巧
  12. mysql sqlyog 1045_sqlyog错误代码1045
  13. Hadoop的安装教程,很详细
  14. vim 插件安装和卸载
  15. Python求解最大子列和
  16. 微信小程序学习之路——API媒体
  17. 数据挖掘(二)预测潜在贷款发放客户
  18. python猜数字游戏编程入门_Python实现猜数字游戏
  19. 亚信科技AntDB数据库荣获2022年度技术卓越奖
  20. mindspore ST调试报错 RunTimeError

热门文章

  1. CBO (基于代价的优化方式)
  2. Sublime Text主题皮肤安装与切换使用方法
  3. 色差输出 S-Video YUV YCbCr YPvPr RGB VGA WXGA
  4. 《武林外传》之(二) 佟掌柜的三板斧
  5. 《***生态文明思想学习纲要》学习辅导
  6. python做流程管理平台_[译] Airflow: 一个工作流程管理平台
  7. matlab有什么实际用处吗?对生活中有什么帮助
  8. 视频教程-Windows Server 2008 R2 系统管理篇(理论+实战)-Windows
  9. 百度智慧城市白皮书 附下载
  10. 个人项目-论文查重/3120005470