美文网首页
Mysql存储引擎区别(Innodb和MyISAM)

Mysql存储引擎区别(Innodb和MyISAM)

作者: darkness605 | 来源:发表于2020-11-12 14:01 被阅读0次

转自:https://blog.csdn.net/zhuanzhe117/article/details/78039692
这是目前看到最言简意赅的一篇解释文了,好文分享一波。

为了便于说明,我们先定义一条数据记录为一个二元组[key,data]
key为记录的键值,key唯一;
data为数据记录除key外的数据。

B树
每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为null。

B树.png

B+树
只有叶子节点存储data,叶子节点包含了这棵树的所有键值,叶子节点不存储指针。

B+树

后来,在B+树上增加了顺序访问指针,也就是每个叶子节点增加一个指向相邻叶子节点的指针,这样一棵树成了数据库系统实现索引的首选数据结构。 这样做也满足了计算机的内存查找时的范围查找原则。

B+树的特点:

1.有k个子结点的结点必然有k个关键码;
2.非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。
3.树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。
4.B+树非叶子节点只保存key,所以相比同时保存key和value的B树来说,占用的内存空间更小。在数据量相同的情况下,B+树比B树更加“矮胖“,因此使用的IO查询次数更少。
5.由于B树的查找并不稳定(最好的情况是查询根节点,最坏查询叶子节点)。而B树每一次查找都是稳定的。

在MySQL中,最常用的两个存储引擎是MyISAM和InnoDB,它们对索引的实现方式是不同的。

MyISAM

data存的是数据地址。索引是索引,数据是数据。索引放在XX.MYI文件中,数据放在XX.MYD文件中,所以也叫非聚集索引。


MyIsam.png

InnoDB

data存的是数据本身。索引也是数据。数据和索引存在一个XX.IDB文件中,所以也叫聚集索引。


InnoDB.png
了解了数据结构再看索引,一切都不费解了,只是顺着逻辑推而已。

两种存储引擎的区别总结:

1、MyISAM是非事务安全的,而InnoDB是事务安全的。
2、MyISAM锁的粒度是表级的,而InnoDB支持行级锁。
3、MyISAM支持全文类型索引,而InnoDB不支持全文索引。
4、MyISAM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyISAM。
5、MyISAM表保存成文件形式,跨平台使用更加方便。
6、MyISAM管理非事务表,提供高速存储和检索以及全文搜索能力,如果在应用中执行大量select操作可选择。
7、InnoDB用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量insert和update操作,可选择。

相关文章

  • mysql(七)

    MySQL存储引擎-innodb 查看存储引擎 innodb和myisam的物理区别 innodb 核心特性 MV...

  • MySQL学习日记(十一)-技术问答

    一、MySQL主要存储引擎MyISAM和InnoDB的区别? 1、 存储结构 MyISAM:每个MyISAM在磁盘...

  • MySQL面试题和答案

    Mysql 的存储引擎,myisam和innodb的区别。答: 1.MyISAM 是非事务的存储引擎,适合用于频繁...

  • 面试题2

    Mysql 的存储引擎,myisam和innodb的区别。答: 1.MyISAM 是非事务的存储引擎,适合用于频繁...

  • 【转】mysql 面试题

    Mysql 的存储引擎,myisam和innodb的区别。 答: 1.MyISAM 是非事务的存储引擎,适合用于频...

  • MySQL面试题和答案

    Mysql 的存储引擎,myisam和innodb的区别。答: 1.MyISAM 是非事务的存储引擎,适合用于频繁...

  • 2018-03-19

    mysql MyISAM引擎和InnoDB的介绍 1、MyISAM MyISAM是MySQL的默认存储引擎,基于...

  • Mysql 的存储引擎的区别

    一.mysql中myisam,innodb和memory三个存储引擎的区别 1、区别:1) MyISAM管理非事务...

  • 浅谈MySQL分布式事物解决方案

    引言:MySQL存储引擎主要分为InnoDB、MyISAM,它们的主要区别是InnoDB支持事物,而MyISAM不...

  • MySql高级之常见的Join查询(一)

    MySql的存储引擎介绍 : 常用的MySql存储引擎只有两个:MyISAM以及InnoDB。 两个存储引擎的区别...

网友评论

      本文标题:Mysql存储引擎区别(Innodb和MyISAM)

      本文链接:https://www.haomeiwen.com/subject/hwvvbktx.html