设计人才网站做百度移动网站优

news/2025/9/23 22:36:41/文章来源:
设计人才网站,做百度移动网站优,网站域名免费申请,做老师好还是网站编辑好谈到索引#xff0c;大家并不陌生。索引本身是一种数据结构#xff0c;存在的目的主要是为了缩短数据检索的时间#xff0c;最大程度减少磁盘 IO。任何有数据的场景几乎都有索引#xff0c;比如手机通讯录、文件系统(ext4xfsfs)、数据库系统(MySQLOracle)。数据库系统和文件…谈到索引大家并不陌生。索引本身是一种数据结构存在的目的主要是为了缩短数据检索的时间最大程度减少磁盘 IO。任何有数据的场景几乎都有索引比如手机通讯录、文件系统(ext4xfsfs)、数据库系统(MySQLOracle)。数据库系统和文件系统一般都采用 B 树来存储索引信息B 树兼顾写和读的性能最极端时检索复杂度为 O(logN)其中 N 指的是节点数量logN 表示对磁盘 IO 扫描的总次数。MySQL 支持的索引结构有四种B 树R 树HASHFULLTEXT。本篇简单介绍下 B 树下一篇讲 MySQL 常用的两种引擎 MyISAM 和 InnoDB 的 B 树索引实现其余的后面会讲到。一、什么是二叉树再讲什么是 B 树之前先来了看下什么是二叉树。树本身是一种数据存储结构因为类似现实生活中的树而命名。一个看似没有修剪过的树其实这是一棵二叉树每个节点最多有两个子节点。树相关的基础概念拿图 1 这棵树举例说明根节点6 为根节点根节点没有父节点有儿子节点一般叫做 ROOT 节点儿子节点8 和 4 是 6 的儿子节点4 是左儿子8 是右儿子父节点6 是 4 和 8 的父节点父节点是儿子节点的上层节点叶子节点4 和 5 是叶子节点叶子节点指的是除根节点外没有儿子的节点兄弟节点8 和 4 互为兄弟节点因为有共同的父亲 6。1097 三个节点没有兄弟都只有一个儿子层数一棵树的节点层数。图 1 层数为 6高度自下向上遍历从叶子节点遍历到根节点所需要的节点数量。叶子节点 5 到根节点遍历 791086这棵树的高度为 5深度自上而下遍历从根节点到叶子节点遍历所需要的节点数量同样这棵树的深度也是 5高度和深度一般以 0 开始计算当然也有按照从 1 开始计算的平衡因子某节点的左子树与右子树深度的差值一般结果为绝对值。如果任何一个子树不存在按照 0 处理。比如节点 10 的平衡因子就是 3图 1 是一颗非常普通的树非常容易退化为一张链表。如果把图 1 换成如下图 根节点就变为 46 退化为 4 的儿子节点这棵树就退化为一张链表。链表的查找非常慢只能按照节点顺序查找每个节点都遍历一遍时间复杂度为 O(n)无法随机查找。二、平衡二叉树(AVL)那对图 1 进行下改造把数据重新节点重新连接下图 2 如下图 2 可以看到以下特性1. 所有左子树的节点都小于其对应的父节点(456)2. 所有右子树上的节点都大于其对应的父节点(8910)(7)(6)(5)(10)(9)3. 每个节点的平衡因子差值绝对值 14. 每个节点都符合以上三个特征。满足这样条件的树叫平衡二叉树(AVL)树。问那再次查找节点 5需要遍历多少次呢由于数据是按照顺序组织的那查找起来非常快从上往下找7-5只需要在左子树上查找也就是遍历 2 次就找到了 5。假设要找到叶子节点 10只需要在右子树上查找那也最多需要 3 次7-9-10。也就说 AVL 树在查找方面性能很好最坏的情况是找到一个节点需要消耗的次数也就是树的层数 复杂度为 O(logN)如果节点非常多呢假设现在有 31 个节点用 AVL 树表示如图 3图 3 是一棵高度为 4 的 AVL 树有 5 层共 31 个节点橙色是 ROOT 节点蓝色是叶子节点。对 AVL 树的查找来看起来已经很完美了能不能再优化下比如能否把这个节点里存放的 KEY 增加能否减少树的总层数那减少纵深只能从横向来想办法这时候可以考虑用多叉树。三、B 树B 树是一种多叉的 AVL 树。B-Tree 减少了 AVL 数的高度增加了每个节点的 KEY 数量。B 树的特性(m 为阶数结点的孩子个数最大值)1. 树中每个节点最多含有 m 个孩子节点 (m2)2. 除根节点和叶子结点外其他节点的孩子数量 ceil(m / 2)3. 若根节点不是叶子结点最少有两个孩子特殊情况没有孩子的根结点即根结点为叶子结点整棵树只有一个根节点 4. 每个非叶子结点中包含有 n 个关键字信息(nP0K1P1K2P2......KnPn) 其中Ki (i1...n) 为关键字且关键字按顺序升序排序 K(i-1) KiPi 为指向儿子节点的指针且指针 P(i-1) 指向的儿子节点里所有关键字均小于 Ki但都大于 K(i-1)关键字的个数 n 必须满足[ceil(m / 2)-1] n m-1如果一个结点有 n 个关键字那么该结点有 n1 个分支。这 n1 个关键字按照递增顺序排列所有叶子结点都出现在同一层是所有遍历的终点位置按照这个要求把图 3 简单变为一棵 B 树见图 4图 4 是一棵 4 阶 B 树总共有 11 个节点节点数比图 3 少了 20 个层数为 3比图 3 少了两层。实际应用中每个最小单元不是 KEY而一般是按照块(BLOCK)来算。比如磁盘文件系统 EXT4 每块 4KB数据库比如 PostgreSQL 是 8KBMySQL InnoDB 是 16KB MySQL NDB 是 32KB 等。所以再次理清图 4 的 B 树变为图 5图 5 每个节点的基本单元是一个磁盘块(BLOCK默认 4KB)根节点含有一个键值其他节点含有 3 个键值每个磁盘块包含对应的键值与数据。比如现在要读取 KEY 为 31 的记录先找到根节点磁盘块(1)读入内存。(第一次 IO)关键字 31 大于区间(16)根据指针 P2 找到磁盘块 3读入内存(第二次 IO)31 大于区间(202428)根据指针 P4 读取磁盘块 11(第三次 IO)在磁盘块 11 中找到 KEY 为 31 的记录返回结果。这期间有三次磁盘 IO 的读取。可以明确看到B 树相对于 AVL 树减少了树的节点数与树的深度减少了磁盘 IO。看到这里其实有一个问题三次 IO前两次 IO 其实从磁盘读取了不必要的数据因为只用比较 KEY所以非叶子节点对应的 DATA 完全没有必要如果 DATA 很大那完全是浪费内存资源。考虑下能否把非叶子节点的 DATA 拿掉四、B 树B 树是对 B 树的一个小升级。大部分数据库的索引都是基于 B 树存储的。MySQL 的 MyISAM 和 InnoDB 引擎的索引都是基于 B 树存储。B 树最大的几个特点1. 非叶子节点只保留 KEY放弃 DATA2. KEY 和 DATA一起在叶子节点并且保存为一个有序链表(正序反序或者双向)3. B 树的查找与 B 树不同当某个结点的 KEY 与所查的 KEY 相等时并不停止查找而是沿着这个 KEY 左边的指针向下一直查到该关键字所在的叶子结点为止。那对图 5 的 B 树做一个调整变为以下 B 树见图 6图 6 是一棵 6 阶 B 树。不同于图 5非叶子节点不再包含除了主键外的数据数据全部放在叶子节点并且所有叶子节点存放在一个单向链表里当然也可以双向链表。可以看到B 树同时具有平衡多叉树和链表的优点即可兼顾 B 树对范围查找的高效又可兼顾链表随机写入的高效 这也是大部分数据库都用 B 树来存储索引的原因。本篇是为了下一篇介绍 MySQL 的两种常用引擎MyISAM 和 InnoDB 索引结构做了一个铺垫下期见。关于 MySQL 的技术内容你们还有什么想知道的吗赶紧留言告诉小编吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

莱芜网络公司网站网站不备案打不开

青少年编程Python编程等级考试二级真题解析(选择题+判断题+编程题) 2023年9月 一、选择题(共25题,共50分) 以下代码运行结果是?( ) A. 宸宸 B. 杭杭 C. 玉玉 D. 州州 答案选:A 考点分析:考察python 列表操作 jxw=yyh[2][0],jxw的值是“拱宸桥”,jxw[1]的值是“宸”…

网上做衣服的网站关于做网站的书

1.农作物遥感分类 1.1 利用多时相环境星 CCD 数据作物分类识别实验 采用支持向量机分类器进行基于象素遥感影像分类方法。在分类过程中,分别对不同日期的单景环境星数据以及不同日期环境星数据的组合进行分类,以评价环境星在作物分类中的应用潜力&#x…

从软件开发公司到用户体验设计公司:如何实现全链路数字化产品服务

从软件开发公司到用户体验设计公司:如何实现全链路数字化产品服务在过去十年里,很多企业数字化项目的核心诉求是“软件要能跑”。因此,软件开发公司的主要价值在于实现业务逻辑与技术落地。然而,随着竞争加剧与用户…

欧派网站谁做的河北城乡建设官网站

我需要使用Guzzle检查数据库中的很多项目.例如,项目数量为2000-5000.将其全部加载到单个数组中太多了,因此我想将其分成多个块:SELECT * FROM items LIMIT100.当最后一个项目发送到Guzzle时,则请求下一个100个项目.在“已满”处理程序中,我应该知道哪个项目得到了响…

9.23总结

今天是9.23,今天星期二,上午上了一上午的工程实训课,我们了解了激光的种类和雕刻的技术,并且自己动手雕刻了一些东西。体验到了自己动手的快乐。中午写了一会儿代码,然后睡了午觉,到下午该上英语课的时候,才睡醒…

日志|力扣|不同路径|最小路径和|动态规划|Javase|IO|File|Javaweb

力扣 62.不同路径思路:自顶向下,dp[i][j]表示(0,0)->(i,j)的路径和,dp数组就是当前格子可走的路径数也就是左边和右边的dp[i][j] = dp[i-1][j] + dp[i][j-1];,迭代填满二维数组,最后一个就是答案。点击查看…

如何建立 5 μm 精度的视觉检测?不仅仅是相机的事

如何建立 5 μm 精度的视觉检测?不仅仅是相机的事pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

网站服务名词解释wordpress 用户 新增

PyTorch深度学习总结 第一章 Pytorch中张量(Tensor)的生成 文章目录 PyTorch深度学习总结一、什么是PyTorch?二、张量(Tensor)1、张量的数据类型2、张量生成和信息获取 总结 一、什么是PyTorch? PyTorch是一个开源的深度学习框架,基于Python…

网站建设类型有哪些小程序定制开发多少费用

前言 element提供的的message消息提示用确实方便直接代码就搞定。但是在特定的场景并不适用 点击某一个点位提示用户点击了或者websocket推送提示用户来信息了(这种提示用户场景) 如果有很多推送信息来,或者用户一直点击。这是屏幕会一直弹…

网站做受网站网站型建设模板

这是DevOps系列的第六节,我们开始安装DockerDebian 上安装可以基于最新debian10的发行版,我现在还用着debian9,不过随后,我会发出Windows / macOs / Ubuntu的参考。安装如果您已经是root用户,则无需使用sudo1、卸载任何…

单页式网站 seo深圳平台推广

1、OpenGL 基础知识 1.1 OpenGL 简介 OpenGL(Open Graphics Library)是图形领域的工业标准,是一套跨编程语言、跨平台、专业的图形编程(软件)接口。它用于二维、三维图像,是一个功能强大,调用…

设计类型的网站家装设计师用什么软件画图

数据分类 数据分为:静态数据、动态数据。 静态数据 静态数据是指一些永久性的数据。一般是以文件的形式存储在硬盘上,比如文档、照片、视频等文件。 电脑关闭后,静态数据仍然还在。只要不主动删掉数据或者硬盘没损坏,这些数据…

做评测好的视频网站有哪些用模版做网站的好处和坏处

操作环境: MATLAB 2022a 1、算法描述 1. DS-CDMA系统 DS-CDMA (Direct Sequence Code Division Multiple Access) 是一种多址接入技术,其基本思想是使用伪随机码序列来调制发送信号。DS-CDMA的特点是所有用户在同一频率上同时发送和接收信息&#xf…

函数 cmd_info_change_cur_model_group

预定义的宏 // 多唤醒词网络切换 // 多唤醒网络切换使能 0:不使能;1:使能 #define MULTI_WAKE_UP_NET_SWITCH 0 // 切换唤醒词ID #define SWITCH_WAKEWORD_ID 0 // 唤醒词网络总数 #define WAKE_UP_NET_TOTAL 0…

一个基于 .NET 开源、简易、轻量级的进销存管理系统 - 教程

一个基于 .NET 开源、简易、轻量级的进销存管理系统 - 教程2025-09-23 22:26 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

线程--相关概念、两种创建线程的方式

线程基础 一、线程相关概念 程序:是为完成特定任务、用某种语言编写的一组指令的集合。简单的说:就是我们写的代码 进程:进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为进程分配内存空间…

昌平建设网站万网域名备案查询

环境: Wiondws XP sp3 工具: ollydbg,ExeInfo PE 查壳: 用Exeinfo PE 查壳,没有壳,是VB写的 过程: 一:随便输入一个serial,得到一个错误信息消息框,OD载入…

中建交通建设集团有限公司网站在线制作电子简历

文章目录类的概念类的定义实例例子分析类的成员数据成员属性成员方法成员静态成员博主写作不容易,孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 类的概念 在日常生活中,类是对具有相同特性的一类是物的抽象。比如水果是一个类,它是对…

商业网站域名后缀wordpress缓存文件

一直以来运营商被认为只是做服务,而设备等都是由设备商提供的,甚至由于如今的设备高度复杂,设备商已承包越来越多的基站运维工作,运营商的技术水平越来越低,不过随着中国移动发布5G射频芯片8676,似乎显示出…

网站页脚凯里网站建设哪家专业

【有道云笔记】二十 4.8 过滤器Filter https://note.youdao.com/s/dSofip3f 一、为什么要使用过滤器 项目开发中,经常会用到重复代码的实现。 1、请求每个servlet都要设置编码 2、判断用户是否登录,只有登录了才有操作权限。 二、过滤器相关Api int…