首页 > 数据库 >数据库为什么不用红黑树而用B+树

数据库为什么不用红黑树而用B+树

时间:2022-11-12 13:55:06浏览次数:34  
标签:数据库 不用 索引 查找 IO 红黑树 磁盘 数据结构

得分点 磁盘IO 标准回答 首先,红黑树是一种近似平衡二叉树(不完全平衡),结点非黑即红的树,它的树高最高不会超过 2*log(n),因此查找的时间复杂度为 O(log(n)),无论是增删改查,它的性能都十分稳定; 但是,红黑树本质还是二叉树,在数据量非常大时,需要访问+判断的节点数还是会比较多,同时数据是存在磁盘上的,访问需要进行磁盘IO,导致效率较低; 而B+树是多叉的,可以有效减少磁盘IO次数;同时B+树增加了叶子结点间的连接,能保证范围查询时找到起点和终点后快速取出需要的数据。 加分回答 红黑树做索引底层数据结构的缺陷 试想一下,以红黑树作为底层数据结构在面对在些表数据动辄数百万数千万的场景时,创建的索引它的树高得有多高? 索引从根节点开始查找,而如果我们需要查找的数据在底层的叶子节点上,那么树的高度是多少,就要进行多少次查找,数据存在磁盘上,访问需要进行磁盘IO,这会导致效率过低; 那么红黑树作为索引数据结构的弊端即是:树的高度过高导致查询效率变慢。

 

参考牛客

标签:数据库,不用,索引,查找,IO,红黑树,磁盘,数据结构
From: https://www.cnblogs.com/northli/p/16883601.html

相关文章

  • I/O多路复用器,数组、链表、红黑树
    IO多路复用指的是单个进程或者线程能同时处理多个IO请求,select,epoll,poll是LinuxAPI提供的复用方式。本质上由操作系统内核缓冲IO数据,使得单个进程线程能监视多个文件描述符......
  • 如何修复处于recovery挂起状态的数据库
    检查数据库的状态数据库的状态有:online、offline、restoring、recovering、suspect、emergency、recoverypendingSELECTname,state_descfromsys.databases 可能......
  • Redis数据库安全之旅
    前言​​Redis​​相信大家都或多或少都听说过吧,作为内存数据库的代表,但是近些年​​Redis​​ 被攻击的典范也是越来越多,我们将如何防护​​Redis​​ 安全呢?跟着......
  • 达梦数据库DEM管理
    DM 企业管理器的英文简称DMEnterpriseManager(DEM)。提供一个通过WEB 界面来监控,管理,维护DM数据库的集中式管理平台,可以从任何可以访问web应用的位置通过DEM来对DM数据......
  • 第二章 关系数据库
    2.1关系数据结构集形式化定义2.1.1关系域:一组具有相同数据类型的值的集合。例:{0,1}{男,女}笛卡儿积:域上的一种集合运算关系:关系中涉及的码:候选码:某......
  • 篇(3)-Asp.Net Core入门实战-数据库配置说明
    入门实战-创建数据库和安装NuGet软件包注意,我们用到asp.netcore新功能中的所谓CodeFirst或者DbFirst,我们先不管这功能,为了快速上手简单功能,我计划使用EF(微软新的数据......
  • jdbc连接Oracle数据库
    importjava.sql.*;publicclassMain{publicstaticvoidmain(String[]args){System.out.println("Helloworld!");Connectionconnection......
  • Mysql数据库函数-单行函数
    一.单行函数:可以理解为向函数传入一个参数,返回一个值。单行函数是指对每一题记录输入值进行计算,并得到相应的计算结果,然后返回给用户,也就是说,每条记录作为一个输入参数,经......
  • thinkPHP查询数据库常用函数
      1.find()  查询一条数据2.field()  查询的字段如field('id,name,age')3.select()  查询多条数据4.setField()  修改一个字段或多个字段值  如se......
  • 数据库架构演变概要
    数据库架构演变概要一.背景为了适应业务增长,数据库数据量快速增长,性能日趋下降,稳定性不佳的实际情况,急需架构逐步演变适应未来的业务发展。二.现状【......