目录:

  • MyISAM与InnoDB模块
  • Btree模块
  • B-tree与哈希索引的区别

一:MyISAM:

创建一个myisam存储引擎的表的时候会出现三个文件

二:InnoDB:

三. Innodb与MyIASM引擎的区别与应用场景

1. Innodb与MyIASM引擎的区别

(1)事务处理:

(2)锁机制不同:

(3)select ,update ,insert ,delete 操作:

  • MyIASM:如果执行大量的SELECT,MyISAM是更好的选择。

  • InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。

(4)查询表的行数不同:

  • MyIASM:select count() from table,MyISAM只要简单的读出保存好的行数,注意的是,当count()语句包含 where条件时,两种表的操作是一样的。
  • InnoDB : InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行。

(5)外键支持:

  • mysiam表不支持外键,而InnoDB支持。

2.为什么MyIASM会比Innodb 的查询速度快

应用场景:

  • MyIASM适合:(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。

  • InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且行锁定的机会比较大的情况。

 

四. Btree与b+tree

1. Btree:

  • B-tree是一种多路自平衡搜索树,它类似普通的二叉树,但是Btree允许每个节点有更多的子节点。Btree示意图如下:

  • B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;

  • 如果B树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么B树的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改变B树结构(插入与删除结点)不需要移动大段的内存数据,甚至通常是常数开销;

  • 右边也是一个B树,但它的搜索性能已经是线性的了;同样的关键字集合有可能导致不同的树结构索引;所以,使用B树还要考虑尽可能让B树保持左图的结构,和避免右图的结构,也就是所谓的“平衡”问题;

  • 实际使用的B树都是在原B树的基础上加上平衡算法,即“平衡二叉树”;如何保持B树结点分布均匀的平衡算法是平衡二叉树的关键;平衡算法是一种在B树中插入和删除结点的策略;

由上图可知 Btree 的一些特点:

2. B+tree:

B+tree是Btree的变体,也是一种多路搜索树:

   1.其定义基本与B-树同,除了:2.非叶子结点的子树指针与关键字个数相同;3.非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间);5.为所有叶子结点增加一个链指针;6.所有关键字都在叶子结点出现;

B+tree的特性:

   1.所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;2.不可能在非叶子结点命中;3.非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;4.更适合文件索引系统;

btree和B+tree的区别:

B*Tree:

是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针;

三. B-tree与哈希索引的区别

1)B+tree的索引:

2)Hash索引:

来源:https://blog.csdn.net/longlong6682/article/details/104805941

MySQL引擎之MyISAM,InnoDB,Btree与B+tree相关推荐

  1. MySQL存储引擎:MyISAM InnoDB

    存储引擎 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用png等.数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制, ...

  2. Mysql引擎之MyISAM引擎

    MyISAM做为Mysql的默认引擎,在性能与特征之间,MyISAM提供一种良好的平衡,这特征包括全文检索(Full-Text Indexing).压缩.空间函数(GIS).但MyISAM不支持事务和 ...

  3. MySQL引擎:MyIsam和Innodb的区别

    InnoDB: 定义: InnoDB是一个事务型的存储引擎,有行级锁定和外键约束.Innodb引擎提供了对数据库 ACID事务的支持,并且实现了SQL标准的四种隔离级别,该引擎还提供了行级锁和外键约束 ...

  4. MySQL的索引存储数据结构BTree和B+Tree的区别

    文章目录 BTree 原理示意图 B+Tree 原理示意图 B+Tree的树层级很少 B+Tree 可以高效支持范围查找 BTree 原理示意图 注:BTree 就是 B-Tree,实际上官方并没有 ...

  5. 【整理】MySQL引擎

    MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型IN ...

  6. MySQL引擎和区别

    目录 1.MySQL引擎 2.InnoDB 3.Mylsam 3.InnoDB和Mylsam的区别: 1.MySQL引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种 ...

  7. mysql介绍(myisam)

    mysql引擎 常用的mysql引擎有myisam.innodb.很多人不知道还有 Memery ,Archive,Ndb等 在这里详细介绍myisam的特性 下表是MyISAM 的功能 每个myis ...

  8. MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

    MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎 1.存储引擎其实就是如何实现存储数据 ...

  9. MySQL 两种存储引擎:MyISAM与InnoDB对比及理解

    MySQL 两种存储引擎:MyISAM与InnoDB对比及理解 目前MySQL默认的存储引擎是InnoDB 现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如 ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(水平带状图、垂直带状图、抖动程度配置)实战
  2. Android之linux基础教学之六 异常
  3. oracle ipc message,【案例】Oracle RAC IPC send timeout error导致RAC的节点挂起解决办法
  4. c语言如何如何入门,程序员C语言新手如何入门?
  5. android 有值代码,Android:如何在代码中获取“listPreferredItemHeight”属性的值?
  6. 解耦与人类行为 (完整)
  7. linux_scp 远程复制不需要输入密码
  8. 用Python快速找到出现次数最多的数据
  9. 质量标准、质量策略和质量责任的概念解释
  10. matlab 钻石绘制,用MATLAB代码模拟大雕和钻石人单挑
  11. jQuery微博登录
  12. [转载] 七龙珠第一部——第114话 悟空的愿望 卡林大人好为难
  13. Unity热更之旧项目救星——Xlua热补丁修复
  14. css实现方框内打勾
  15. 环境配置 python 3.6+Anaconda+cuda9.0+cudNN7.0+Tensorflow
  16. activities工作流入门笔记-001-建表
  17. python判断手机号运营商_如何判断手机号的运营商那?
  18. Qt pro 文件详解
  19. 阿里云视频点播指定清晰度
  20. Python字体成灰色有波浪号

热门文章

  1. django前后端结合_简单4步用FLASK/Django部署你的Pyecharts项目
  2. python 将图片转换成像素画_Canvas 实现位图转像素画
  3. gitlab 开源项目 星_49必须了解的机器学习开源项目,Github上平均3600星
  4. 「Github」Linux/Ubuntu下终端Github教程与手册
  5. Spark自带的集群模式(Standalone),Spark/Spark-ha集群搭建
  6. HDFS的工作机制,HDFS写数据流程,HDFS读数据流程(来自学习资料)
  7. HDFS的API调用,创建Maven工程,创建一个非Maven工程,HDFS客户端操作数据代码示例,文件方式操作和流式操作
  8. JNI方面的笔记(未完待续)
  9. Oracle中管理用户(创建用户,用户加锁,用户解锁,修改用户密码,授权登录权限,撤销登录权限,授权连接权限,conn命令,创建角色,并为角色赋权限,将角色赋给指定用户)
  10. caffe.pb.h丢失问题: