MySQL实战面试题_Mysql实战面试题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

一、索引B+ Tree 原理1. 数据结构

B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。

B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。

在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1

2. 操作

进行查找操作时,首先在根节点进行二分查找,找到一个 key 所在的指针,然后递归地在指针所指向的节点进行查找。直到查找到叶子节点,然后在叶子节点上进行二分查找,找出 key 所对应的 data。

插入删除操作会破坏平衡树的平衡性,因此在插入删除操作之后,需要对树进行一个分裂、合并、旋转等操作来维护平衡性。

3. 与红黑树的比较

红黑树等平衡树也可以用来实现索引,但是文件系统及数据库系统普遍采用 B+ Tree 作为索引结构,主要有以下两个原因:

(一)更少的查找次数

平衡树查找操作的时间复杂度和树高 h 相关,O(h)=O(logdN),其中 d 为每个节点的出度。

红黑树的出度为 2,而 B+ Tree 的出度一般都非常大,所以红黑树的树高 h 很明显比 B+ Tree 大非常多,查找的次数也就更多。

(二)利用磁盘预读特性

为了减少磁盘 I/O 操作,磁盘往往不是严格按需读取,而是每次都会预读。预读过程中,磁盘进行顺序读取,顺序读取不需要进行磁盘寻道,并且只需要很短的旋转时间,速度会非常快。

操作系统一般将内存和磁盘分割成固定大小的块,每一块称为一页,内存与磁盘以页为单位交换数据。数据库系统将索引的一个节点的大小设置为页的大小,使得一次 I/O 就能完全载入一个节点。并且可以利用预读特性,相邻的节点也能够被预先载入。

MySQL 索引

索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。

1. B+Tree 索引

是大多数 MySQL 存储引擎的默认索引类型。

因为不再需要进行全表扫描,只需要对树进行搜索即可,所以查找速度快很多。

除了用于查找,还可以用于排序和分组。

可以指定多个列作为索引列,多个索引列共同组成键。

适用于全键值、键值范围和键前缀查找,其中键前缀查找只适用于最左前缀查找。如果不是按照索引列的顺序进行查找,则无法使用索引。

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

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

相关文章

Redux有何优点?

by Justin Falcone贾斯汀法尔科内(Justin Falcone) Redux有何优点? (What’s So Great About Redux?) Redux elegantly handles complex state interactions that are hard to express with React’s component state. It is essentially a message-passing syste…

python基础——使用模块

python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env python3 # -*- coding: utf-8 -*- a test module __author…

力扣——键盘行

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]注意: 你可…

网络空间技术实验室:打造信息安全技术培育平台

从PC互联网到移动互联网,音视频、图片越来越成为大众关注的热点。过去,人们习惯于在网络浏览文字新闻;今天,人们对于视频新闻、图片新闻的接受度更高。 网络的发展无疑给人们带来了便利。但同时,一个不可否认的事实是&…

如何对mysql做物理备份_如何创建物理MySQL备份

前提条件在开始之前,确保你有一个有sudo权限的用户和一个MySQL数据库服务器。查找数据目录使用root密码登录到MySQL服务器。$ sudo mysql -u root -p下面的SQL显示MySQL实例的数据目录。mysql> select datadir;输出类似于-----------------| datadir |----------…

freecodecamp_1000天的freeCodeCamp

freecodecampToday, the freeCodeCamp community turns 1,000 days old. We’ve accomplished a lot together in that time:今天,freeCodeCamp社区已经有1000天的历史了。 到那时我们已经共同完成了很多工作: 6,000 campers have gotten their first d…

如何正确遍历删除List中的元素,你会吗?

遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题。下面主要看看以下几种遍历删除List中元素的形式: 1.通过增强的for循环删除符合条件的多个元素 2.通过增强的for循环删除符合条件的一个元素 3.通过普通的for删除删除符合条件的多个元素…

Jmeter 通过json Extracted 来获取 指定的值的id

在没有 精确或模糊查询的接口时可以使用jmeter 获取指定的值的ID import java.lang.String ; String getTargetName"iphone632g"; //判读相应结果中是否包含指定值:iphone632g boolean containsCategoryprev.getResponseDataAsString().contains(getTarge…

mysql 结果保存到文件_将MySQL中sql运行结果保存到文件

将MySQL中sql运行结果保存到文件有两种方法。方法一:在mysql>提示符中使用teemysql> tee output.txtLogging to file output.txtmysql> noteeOutfile disabled.或者mysql> \T output.txtLogging to file output.txtmysql> \tOutfile disabled.这个类…

获取电脑和操作系统信息-uname

用法:uname [选项]...输出一组系统信息。如果不跟随选项,则视为只附加-s 选项。-a, --all 以如下次序输出所有信息。其中若-p 和-i 的探测结果不可知则被省略:-s, --kernel-name 输出内核名称-n, --nodename 输出网络节点…

MobileSpace-关于我的激情的故事

by Monte Thakkar通过Monte Thakkar MobileSpace-关于我的激情的故事 (MobileSpace — A story about my passions) 我发现,学习和教授iOS开发的旅程 (My journey to discovering, learning, and teaching iOS development) “Let this be the first thing you hea…

Do you have an English name? 你有英文名吗?

文中提到的所有人名都是虚构的,如有雷同,纯属巧合。当然,你的洋名儿也可能是德文、法文、意大利文,等々々々。 全球化时代,和老外的交流也多了。“高端”的程序员想要进欧美系外企,想要出国看世界&#xff…

php+nginx导入太大文件报http error错误的原因

项目中用到太多的导入导出,最近换了服务器,导致一旦文件过大就出现http error的错误,查找后是配置文件没有同步的原因,php.ini需要几个配置 upload_max_filesize 20M 表示上传的最大文件为20M post_max_size 20M 允许post提交的…

rhel 7.2 安装mysql_在rhel7.2下源码安装mysql-5.6.35

如何在一台新机rhel7.2下源码安装mysql-5.6.35一、前期准备工作1、首先安装依赖包,避免在安装过程中出现问题yum -y install gcc gcc-c cmake ncurses-devel autoconf perl perl-devel2、下载源码包3、创建mysql安装目录以及数据存放目录[[email protected] liuzhen…

网络安全不是奢侈品,而是必需品

2016年国家网络安全宣传周于9月19日至25日在武汉隆重举办。《长江日报》记者高萌采访了思科全球副总裁、大中华区首席技术官曹图强,以下是9月19日《长江日报》刊登的采访全文: 思科全球副总裁、大中华区首席技术官曹图强昨日下午,思科全球副总…

开源开发平台_电线之间:开源开发商Sindre Sorhus的采访

开源开发平台by Vivian Cromwell通过维维安克伦威尔(Vivian Cromwell) 电线之间:开源开发商Sindre Sorhus的采访 (Between the Wires: An interview with open source developer Sindre Sorhus) Here’s my interview Sindre Sorhus, a prolific open source devel…

白宫力挺FBI:库克干扰司法与正义

据中文业界资讯站报道,眼看着谷歌、Mozilla、Facebook等大组织都开始声援库克,美国白宫也就关于要求苹果协助解锁iPhone调查加州枪击案的事件作出了回应。白宫新闻秘书Josh Earnest强调,FBI并没有要求苹果重新设计产品或者是给它们留后门&…

UUID,加密解密算法的使用

注意的地方: Base64Encoder,Base64Decoder并不属于JDK标准库范畴,但是又包含在了JDK中 解决方法:按照如下方法设置Eclipse导入%JAVA_HOME%\jre\lib目录下的rt.jar包即可,Project->Properties,选择Java Build Path设…

sae mysql 同步本地_MYSQL入门之三_将本地MySQL数据导入SAE数据库_MySQL

bitsCN.comMYSQL入门之三_将本地MySQL数据导入SAE数据库1. MySQL字符集MySQL的默认字符集是latin1,将本地MySQL库导出成sql,再导入到SAE的MySQL时中文字符出现乱码,解决方法是将本地mysql默认字符集也设成utf8查看当前MySQL字符集mysql> s…

vim block vim_我如何学会爱Vim

vim block vimby Sanchit Gera通过Sanchit Gera 我如何学会爱Vim (How I learned to love Vim) I’ve had a bitter-sweet relationship with Vim for a long time.我与Vim有一段苦甜的恋情。 Over the last couple of years, I tried to learn Vim on several occasions. Ea…