Java高級工程師每日面試題精選,面試經歷分享

MySQL為何不選擇平衡二叉樹

既然平衡二叉樹解決了普通二叉樹的問題,那么mysql為何不選擇平衡二叉樹作為索引呢?

索引需要存儲什么

讓我們想一想,如果我們要把索引存起來,那么應該存哪些信息呢,它應該存儲三塊信息:

  • 索引的值:就是表里面索引列對應的值。

  • 數據的磁盤地址(通過磁盤地址找到當前數據)或者直接存儲整條數據。

  • 子節點的引用:我們需要從根節點往下走,所以需要知道左右子節點的地址。 根據這三點,可以有如下大致的一個簡單的結構圖:

image.png

上圖中數字表示的是索引的值,0x開頭的表示磁盤地址,根節點中存了左右節點的引用。

AVL樹用來存儲索引存在什么問題

我們知道,頁(Page)是 Innodb 存儲引擎用于管理數據的最小磁盤單位,頁的默認大小為16KB。頁也就是上圖中的節點,每查詢一次節點就需要進行一次IO操作,IO操作是一種非常耗時的操作,很多業務系統的瓶頸都是卡在IO操作上,所以如果我們需要提高查詢效率的辦法之一就是減少IO次數,那么問題就來了,AVL樹一個節點上只存了一個關鍵字(索引值)+一個磁盤地址+左右節點的引用,這是遠遠達不到16KB的,會浪費了大量的空間。

上圖中如果我們要找到6這條數據,需要進行3次IO(獲取一個節點就是一個IO操作),如果這棵樹很高的話,就會進行大量的IO操作,所以說AVL樹存在的最大問題就是空間利用不足,浪費了大量空間,數據量大的時候就會成為一顆瘦高的樹,那么我們可以怎么改進呢?答案很明顯了,那就是每個磁盤塊多存一點東西,也就是說每個磁盤多存幾個關鍵字,因為關鍵字越多,路數越多;路數越多,樹也就越矮越胖,相應的操作IO次數就會越少。

多路平衡樹(Balanced Tree)

多路平衡樹簡稱B樹,又稱B-樹,和AVL樹一樣,B樹在枝節點和葉子節點存儲鍵值、磁盤地址、左右節點引用。請看下圖的一個多路平衡樹的示例:

image.png

B樹的特點

相比較AVL樹,B樹一個磁盤上可以存多個關鍵字(值),而且有一個特點就是:

  • 分叉數(路數)永遠比關鍵字數多1。 我們可以畫出如下簡圖(下圖中只畫了3路,即兩個關鍵字,實際取決于一頁能存儲多少個關鍵字):

image.png

從上圖可以很明顯的看出,同樣高度的樹,B樹能存的數據遠遠大于平衡二叉樹。

B樹是如何查找數據的

以上圖為例,假如我們要找key=32這個數字,首先獲取到根節點,發現18小于key,所以往右邊走,獲取到右邊的數據,54和76,這時候遵循以下原則:

  • key<54,命中最左邊分叉;

  • key=54,直接命中,返回數據;

  • 54<key<76,走中間的一個分叉;

  • key=76,直接命中,返回數據;

  • key>76,命中右邊分支; 這里因為key=32,所以走得是第1條,命中左邊分支,這時候再去獲取左邊分支,獲取到32和50,比較發現key=32,命中,返回數據。

從上面我們可以看出B樹效率相對于AVL樹,在數據量大的情況效率已經提高了很多,那么為什么MySQL還是不選擇B樹作為索引呢? 那么接下來讓我們先看看改良版的B+樹,然后再下結論吧!

B+樹

B+樹由B樹改良而來,屬于改良版的多路平衡查找樹。 首先讓我們來看看B+樹到底長什么樣呢:

image.png

對比B+樹,我們可以發現一個很明顯的區別就是葉子節點有一個箭頭指引而且從左到右是有序的。

InnoDB中使用的B+樹相比較于傳統B+樹,改進之后的B+樹具有以下特點

InnoDB中B+樹的特點

  • 它的關鍵字的數量是跟路數相等的。

  • B+樹的根節點和枝節點中都不會存儲數據,只有葉子節點才存儲數據。而搜索到關鍵字不會直接返回,會到最后一層的葉子節點。

  • B+樹的每個葉子節點增加了一個指向相鄰葉子節點的指針,它的最后一個數據會指向下一個葉子節點的第一個數據,形成了一個有序鏈表的結構。

  • 它是根據左閉右開的區間來檢索數據的 按照B+樹的特點,我們可以畫出一個存儲數據的簡圖,如下:

image.png

最后

給大家送上一份福利,領取方式:戳這里免費下載

Java架構進階面試及知識點文檔筆記

這份文檔共498頁,其中包括Java集合,并發編程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面試解析及知識點整理

image

Java分布式高級面試問題解析文檔

其中都是包括分布式的面試問題解析,內容有分布式消息隊列,Redis緩存,分庫分表,微服務架構,分布式高可用,讀寫分離等等!

image

互聯網Java程序員面試必備問題解析及文檔學習筆記

image

Java架構進階視頻解析合集

)]

互聯網Java程序員面試必備問題解析及文檔學習筆記

[外鏈圖片轉存中…(img-kDFntc1E-1625205424045)]

Java架構進階視頻解析合集

image

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385750.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385750.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385750.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機考研英語詞匯書,求助:有知道電腦背考研英語單詞的

2017考研英語復習進行到今天&#xff0c;相信大家對背單詞都不陌生&#xff0c;背單詞是每個學生都會頭疼的地方&#xff0c;背了忘、忘了背如此惡性循環&#xff0c;到最后記住的單詞卻沒有幾個。面對這樣的結果&#xff0c;都教授想說&#xff1a;你背單詞的方法用對了嗎?背…

Java面試題目,java關鍵字final

1 進程 進程與程序 操作系統之中最為通用的概念就是「進程」。與此相關的面試題以及各種技術優化策略也層出不窮&#xff0c;足以夠證明它對于理解操作系統中舉足輕重的地位。事實上&#xff0c;通過「進程」&#xff0c;程序員可以更為直觀的理解自己所開發的軟件&#xff0…

工作組無法訪問計算機用戶,工作組計算機無法訪問,詳細教您工作組計算機無法訪問怎么解決...

電腦用戶反映稱在局域網中&#xff0c;查看工作組計算機時說無法訪問&#xff0c;沒有權限使用網絡資源。就是雙擊“查看工作組計算機”時&#xff0c;提示“Workgroup無法訪問。” what the fuck &#xff01;&#xff01;怎么解決&#xff1f;(泄氣)下面&#xff0c;小編給大…

Java面試題目,java工程師成神之路

2. ZooKeeper 介紹 2.1. ZooKeeper 由來 正式介紹 ZooKeeper 之前&#xff0c;我們先來看看 ZooKeeper 的由來&#xff0c;還挺有意思的。 下面這段內容摘自《從 Paxos 到 ZooKeeper 》第四章第一節&#xff0c;推薦大家閱讀一下&#xff1a; ZooKeeper 最早起源于雅虎研究院…

音樂計算機融合課,融合信息技術的音樂課

上一節共讀&#xff0c;陳蕾老師帶我們學習了雷圣峰老師如何在一堂以“生活中的青花紋飾”為主題的美術課上搭建教學腳手架并展現了信息技術與美術學科的融合。一直以來&#xff0c;很多教師認為像美術、音樂這樣的藝術學科在融合信息技術上是有一些困難的&#xff0c;上一節共…

Java面試題目,極客時間免費課程

一、對Kafka的認識 1.Kafka的基本概念 2.安裝與配置 3.生產與消費 4.服務端參數配置 二、生產者 1.客戶端開發 2.原理分析 3.重要的生產者參數 三、消費者 1.消費者與消費組 2.客戶端開發 四、主題與分區 1.主題的管理 2.初識KafkaAdminCilent 3.分區的管理 4.如何…

w7重啟計算機打印機無法使用,win7系統電腦重啟打印機服務就會被關閉的解決方法...

很多小伙伴都遇到過win7系統電腦重啟打印機服務就會被關閉的困惑吧&#xff0c;一些朋友看過網上零散的win7系統電腦重啟打印機服務就會被關閉的處理方法&#xff0c;并沒有完完全全明白win7系統電腦重啟打印機服務就會被關閉是如何解決的&#xff0c;今天小編準備了簡單的解決…

Java面試題!centos安裝yum

技術焦慮 現在的技術圈子很火熱&#xff0c;任何技術點&#xff0c;任何知識&#xff0c;只要你肯搜索&#xff0c;都能找到資料。但是現在技術圈確實有一個不好的地方&#xff0c;就是販賣焦慮。這種販賣焦慮的點并不在于形式&#xff0c;而是一種普遍的心態。特別是對于那種…

2016年全國計算機技術與軟件,2016年的上半年的全國計算機技術與軟件專業技術資格(水平)考.doc...

2016年的上半年的全國計算機技術與軟件專業技術資格(水平)考.doc (1頁)本資源提供全文預覽&#xff0c;點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧&#xff0c;查找使用更方便哦&#xff01;19.90 積分&#xfeff;2011年上半年全國計算機技術與軟件專業技術資格(水平)考試…

Java面試題!java面向對象程序設計答案

一、對Kafka的認識 1.Kafka的基本概念 2.安裝與配置 3.生產與消費 4.服務端參數配置 二、生產者 1.客戶端開發 必要的參數配置消息的發送序列化分區器生產者攔截器 2.原理分析 整體架構元數據的更新 3.重要的生產者參數 三、消費者 1.消費者與消費組 2.客戶端開發 必要的…

測試學生成績的軟件,《軟件測試-學生成績管理系統》.doc

宿遷學院軟件測試—學生成績管理系統姓名&#xff1a; *****班級&#xff1a;計算機(3)班學號&#xff1a;******系部&#xff1a; 三 系指導老師&#xff1a;*****成績&#xff1a;目錄目錄21引言31.1開發系統目標31.2開發系統背景31.3用戶需求31.4系統組成32功能要求42.1系統…

Java面試題,java培訓北京哪家好

一、公務員都不要35歲以上的&#xff0c;何況大公司 這讓很多人感到惶恐&#xff0c;現在職場上有一種現象&#xff1a;很多用人單位會在招聘信息上明確標注&#xff0c;年齡需在35歲以下。為什么有經驗、有人脈的職場中年人會如此遭“嫌棄”呢&#xff1f; 首先&#xff0c;…

計算機輔助外文文獻,計算機輔助夾具設計外文文獻.pdf

Computer-Aided Design 42 (2010) 1085–1094Contents lists available at ScienceDirectComputer-Aided Designjournal homepage: /locate/cadComputer aided fixture design: Recent research and trendsHui Wang a,?, Yiming (Kevin) Rong a,b , Hua Li b , Price Shaun ba…

Java面試題,java工程師求職簡歷

One&#xff1a;JVM實踐思維圖&#xff08;完整版&#xff09; Two&#xff1a; 走近Java 概述 Java技術體系Java發展史Java虛擬機家族&#xff1a;&#xff08;Sun Classic/Exact VM、HotSpot VM、Mobile/Embedded VM、BEA JRockit/IBM J9 VM、BEA Liquid VM/Azul VM、Apache…

配電柜測試軟件,低壓配電柜測試方法及流程.docx

PAGE \* MERGEFORMAT6Newtech MS-E-01-SAT-Rev0018.0 測試記錄表格&#xff1a;安裝檢查設備編號&#xff1a; 參考圖紙&#xff1a;序號項目結果備注1安裝位置是否與設計圖紙一致合格 不合格2配電柜外觀是否完好合格 不合格3電纜進線口及出線口是否加絕緣防護合格 不合格4進線…

java高分面試指南:javamvc模式簡單案例

Spring面試高頻問題 SpringMVC面試高頻問題 MyBatis面試高頻問題 SpringBoot面試高頻題 SpringCloud面試高頻問題 Redis高級面試題 Dubbo高頻常問面試問題 Java虛擬機&#xff08;JVM&#xff09; MySQL數據庫高頻面試問題 Java高頻面試專題合集解析&#xff1a; 當然在這還有更…

智能不屬于計算機理論,討論:計算機如何能提出自己的理論

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓作者&#xff1a; 沒事少抽煙 2006-8-28 13:201、如何定義“AI自己的理論”這個命題&#xff1f;AI是簡單的輸出幾個單詞還是提出具體的理論體系&#xff1f;----------------------------------------------------------------現在…

java高分面試指南:java單例模式雙重檢查

1. CAP 的由來 要理解 CAP&#xff0c;首先我們要清楚&#xff0c;為何會有人提出 CAP&#xff1f;他提出 CAP 是為了解決什么問題&#xff1f; 時間回到 1985 年&#xff0c;彼時&#xff0c;后來證明了 CAP 理論的 Lynch 教授此時給當時的 IT 界來了一記驚雷&#xff1a; …

win10計算機磁盤圖標,Win10 21H1怎么更換電腦磁盤的圖標標識

導語&#xff1a;每臺win10電腦的磁盤圖標都是一樣的,有什么辦法可以修改硬盤圖標呢?為了讓我們的電腦更具個性化,小編給大家分享下Win10 21H1怎么更換電腦磁盤的圖標標識。方法如下&#xff1a;手動配置.inf文件1、首先&#xff0c;將要設置為驅動器圖標的圖標文件(ico格式)復…

服務器重裝 pe,WinPE 下安裝 Windows Server 2003 服務器

一.準備和資源需求1.U盤&#xff0c;內置WinPE 啟動 。2.Windows Server 2003 操作系統的 iso 文件。3.Windows Server 2003 操作系統的正常文件(iso中提取的文件和文件夾)二.安裝流程1. u盤 啟動 運行 WinPE2. 進入 WinPE系統&#xff0c;把 Windows Server 2003 操作系統的is…