首页 > 数据库 >MySQL索引以及InnoDB

MySQL索引以及InnoDB

时间:2022-10-28 14:34:26浏览次数:61  
标签:索引 查找 InnoDB 二叉树 MySQL 磁盘 平衡 节点

二叉树

当数据是自增的时候,二叉树会跟链表没有区别

平衡二叉树

它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。、

红黑数

红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入最多只需要三次旋转就能达到平衡,实现起来也更为简单。

优点:不会出现二叉树的极端情况,当两边深度差距太大会选择,维持相对平衡

缺点:当数据量太大的时候,索引的层级会非常深,假设需要查找的数据在叶子节点,进行的I/O会过多,非常影响性能

B-Tree(平衡多路查找树)

B-Tree是为磁盘等外存储设备设计的一种平衡查找树,非叶子节点也会存储数据

系统从磁盘读取数据到内存时是以磁盘块(block)为基本单位的,位于同一个磁盘块中的数据会被一次性读取出来,而不是需要什么取什么。

InnoDB存储引擎中有页(Page)的概念,页是其磁盘管理的最小单位。InnoDB存储引擎中默认每个页的大小为16KB,可通过参数innodb_page_size将页的大小设置为4K、8K、16K,在MySQL中可通过如下命令查看页的大小:

mysql> show variables like 'innodb_page_size';

而系统一个磁盘块的存储空间往往没有这么大,因此InnoDB每次申请磁盘空间时都会是若干地址连续磁盘块来达到页的大小16KB。InnoDB在把磁盘数据读入到磁盘时会以页为基本单位,在查询数据时如果一个页中的每条数据都能有助于定位数据记录的位置,这将会减少磁盘I/O次数,提高查询效率。

B+Tree

是B-Tree的变种,非叶子节点不存储数据,数据存储在叶子节点,同时叶子节点存储全部数据,且叶子节点相互储存左右叶子节点的地址(便于范围查找)

 

 

标签:索引,查找,InnoDB,二叉树,MySQL,磁盘,平衡,节点
From: https://www.cnblogs.com/happy12123/p/16835844.html

相关文章

  • MySQL生产事故一例
    背景线上日志报错:18:57:54.985[http-nio-8082-exec-9]ERRORo.a.c.c.C.[.[.[.[dispatcherServlet]-Servlet.service()forservlet[dispatcherServlet]incontextwit......
  • mysql的主从复制原理
    MySQL主从复制面试和原理1.什么事是主从赋值主从复制是用来建立一个主数据库master和一个一样的从数据库,主数据库一般是准实时update,inster,delete从数据库一般都是进行......
  • MySQL的使用
    MySQL基本信息:1.配置文件及目录 :/etc/mysql/mysql.conf.d,2.用户信息及目录 :/home/用户/.bashrc ===>使用mima命令查看用户信息一.MySQLl服务......
  • azure关闭mysql ssl
    创建mysql服务默认会开启ssl,导致连接报错ERROR3159(HY000):Connectionsusinginsecuretransportareprohibitedwhile--require_secure_transport=ON.解决办法:......
  • Linux环境下mysql数据库备份操作说明
    如下:一、 编写数据库备份shell脚本1、登录服务器,进入mysql安装目录。例:cd/usr/local/mysql2、创建目录dbBakShell和dbbak,用于放置数据备份脚本及备份文件mkdir d......
  • (Linux安装)Mysql5.7数据库
    下载地址:https://downloads.mysql.com/archives/community/ 1.解压tar-xvfmysql-5.7.26-linux-glibc2.12-x86_64.tar 2.再移动并重命名一下mvmysql-5.7.26-linu......
  • MySQL 5.0版本的安装步骤
    一、MYSQL的安装1、以管理员的身份运行“mysql_setup.exe”2、点击“Next”3、选择“Iacceptthetermsinthelicenseagreement”点击“Next”4、选择安装类型,“Typ......
  • Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class
    这是在弄那个政策查询系统的时候遇到的报错其实明眼就能看出来是mysql的版本问题,关键是怎么改首先mysql8版本以下的用的是:com.mysql.jdbc.Drivermysql8以上的用的是......
  • MySQL锁
    MySQL锁目录MySQL锁按照锁思想分类乐观锁悲观锁按照锁类型分类读锁(共享锁、S锁)写锁(排他锁、X锁)意向锁意向共享锁(ISLock)意向排他锁(IXLock)按照锁级别分类全局锁(数据库级别......
  • 【MySQL】Navicat15 安装
    #Navicat安装`提示`:鉴于之间已经出了MySQL的安装教程,在这了我也讲下,那个其实包含了两个知识点,既可以小白初次安装MySQL客户端,也面向想安装5.x和8.x两个版本的。---@[T......