久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 為什么有關(guān)MongoDB采用B樹(shù)索引,以及Mysql B+樹(shù)做索引?

為什么有關(guān)MongoDB采用B樹(shù)索引,以及Mysql B+樹(shù)做索引?

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-10-11 04:04:28 1696968268

一、為什么有關(guān)MongoDB采用B樹(shù)索引,以及Mysql B+樹(shù)做索引

B-樹(shù)和B+樹(shù)最重要的一個(gè)區(qū)別就是B+樹(shù)只有葉節(jié)點(diǎn)存放數(shù)據(jù),其余節(jié)點(diǎn)用來(lái)索引,而B(niǎo)-樹(shù)是每個(gè)索引節(jié)點(diǎn)都會(huì)有Data域。
這就決定了B+樹(shù)更適合用來(lái)存儲(chǔ)外部數(shù)據(jù),也就是所謂的磁盤(pán)數(shù)據(jù)。
從Mysql(Inoodb)的角度來(lái)看,B+樹(shù)是用來(lái)充當(dāng)索引的,一般來(lái)說(shuō)索引非常大,尤其是關(guān)系性數(shù)據(jù)庫(kù)這種數(shù)據(jù)量大的索引能達(dá)到億級(jí)別,所以為了減少內(nèi)存的占用,索引也會(huì)被存儲(chǔ)在磁盤(pán)上。
那么Mysql如何衡量查詢效率呢?磁盤(pán)IO次數(shù),B-樹(shù)(B類樹(shù))的特定就是每層節(jié)點(diǎn)數(shù)目非常多,層數(shù)很少,目的就是為了就少磁盤(pán)IO次數(shù),當(dāng)查詢數(shù)據(jù)的時(shí)候,較好的情況就是很快找到目標(biāo)索引,然后讀取數(shù)據(jù),使用B+樹(shù)就能很好的完成這個(gè)目的,但是B-樹(shù)的每個(gè)節(jié)點(diǎn)都有data域(指針),這無(wú)疑增大了節(jié)點(diǎn)大小,說(shuō)白了增加了磁盤(pán)IO次數(shù)(磁盤(pán)IO一次讀出的數(shù)據(jù)量大小是固定的,單個(gè)數(shù)據(jù)變大,每次讀出的就少,IO次數(shù)增多,一次IO多耗時(shí)?。。?,而B(niǎo)+樹(shù)除了葉子節(jié)點(diǎn)其它節(jié)點(diǎn)并不存儲(chǔ)數(shù)據(jù),節(jié)點(diǎn)小,磁盤(pán)IO次數(shù)就少。這是優(yōu)點(diǎn)之一。
另一個(gè)優(yōu)點(diǎn)是什么,B+樹(shù)所有的Data域在葉子節(jié)點(diǎn),一般來(lái)說(shuō)都會(huì)進(jìn)行一個(gè)優(yōu)化,就是將所有的葉子節(jié)點(diǎn)用指針串起來(lái)。這樣遍歷葉子節(jié)點(diǎn)就能獲得全部數(shù)據(jù),這樣就能進(jìn)行區(qū)間訪問(wèn)啦。

(數(shù)據(jù)庫(kù)索引采用B+樹(shù)的主要原因是 B樹(shù)在提高了磁盤(pán)IO性能的同時(shí)并沒(méi)有解決元素遍歷的效率低下的問(wèn)題。正是為了解決這個(gè)問(wèn)題,B+樹(shù)應(yīng)運(yùn)而生。B+樹(shù)只要遍歷葉子節(jié)點(diǎn)就可以實(shí)現(xiàn)整棵樹(shù)的遍歷。而且在數(shù)據(jù)庫(kù)中基于范圍的查詢是非常頻繁的,而B(niǎo)樹(shù)不支持這樣的操作(或者說(shuō)效率太低))。
至于MongoDB為什么使用B-樹(shù)而不是B+樹(shù),可以從它的設(shè)計(jì)角度來(lái)考慮,它并不是傳統(tǒng)的關(guān)系性數(shù)據(jù)庫(kù),而是以Json格式作為存儲(chǔ)的nosql,目的就是高性能,高可用,易擴(kuò)展。首先它擺脫了關(guān)系模型,上面所述的優(yōu)點(diǎn)2需求就沒(méi)那么強(qiáng)烈了,其次Mysql由于使用B+樹(shù),數(shù)據(jù)都在葉節(jié)點(diǎn)上,每次查詢都需要訪問(wèn)到葉節(jié)點(diǎn),而MongoDB使用B-樹(shù),所有節(jié)點(diǎn)都有Data域,只要找到指定索引就可以進(jìn)行訪問(wèn),無(wú)疑單次查詢平均快于Mysql(但側(cè)面來(lái)看Mysql至少平均查詢耗時(shí)差不多)。
總體來(lái)說(shuō),Mysql選用B+樹(shù)和MongoDB選用B-樹(shù)還是以自己的需求來(lái)選擇的。

延伸閱讀:

二、二叉樹(shù)和紅黑樹(shù)

二叉樹(shù):對(duì)于表提供自增整形字段作為建立索引的列,那子元素總是添加去了右側(cè),導(dǎo)致左子樹(shù)一直為空,那么查找時(shí)就完全退化成了沒(méi)加索引那樣了。紅黑樹(shù):紅黑樹(shù)解決了二叉樹(shù)不平衡的問(wèn)題。然為什么要費(fèi)力保持樹(shù)的平衡性?是因?yàn)闃?shù)的查找性能取決于樹(shù)的高度,讓樹(shù)盡可能平衡,就能降低樹(shù)高。但因?yàn)槠涓腹?jié)點(diǎn)只能存在兩個(gè)子節(jié)點(diǎn),那在數(shù)據(jù)量大的時(shí)候,深度也很大。
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
在C語(yǔ)言下數(shù)組array與鏈表linklist各自的優(yōu)點(diǎn)和缺陷是什么?

一、在C語(yǔ)言下數(shù)組array與鏈表linklist各自的優(yōu)點(diǎn)和缺陷數(shù)組可以通過(guò)下標(biāo)訪問(wèn),隨機(jī)訪問(wèn)效率高,鏈表需要通過(guò)指針遍歷,訪問(wèn)效率低。數(shù)組在分配...詳情>>

2023-10-11 05:43:25
oa系統(tǒng)一般有哪些模塊?

一、組織架構(gòu)模塊組織架構(gòu)模塊記錄了企業(yè)的組織結(jié)構(gòu)、人員信息、部門(mén)職責(zé)、工作流程等基本信息,實(shí)現(xiàn)了組織架構(gòu)的可視化和管理。該模塊主要包括...詳情>>

2023-10-11 05:33:42
為什么python沒(méi)有大頂堆?

一、python沒(méi)有大頂堆的原因Python沒(méi)有內(nèi)置大頂堆,是因?yàn)樵趯?shí)際使用中,大頂堆并不是那么常用。相比之下,小頂堆和普通的堆操作更具有廣泛的應(yīng)...詳情>>

2023-10-11 05:30:39
什么是crm管理?

一、crm管理概念 CRM管理也叫客戶管理,亦即客戶關(guān)系管理(Customer Relationship Management)的簡(jiǎn)稱。CRM管理的主要含義就是通過(guò)對(duì)客戶詳細(xì)資...詳情>>

2023-10-11 05:28:00
單調(diào)棧什么時(shí)候從后向前遍歷,什么時(shí)候從前向后遍歷?

一、單調(diào)棧什么時(shí)候從后向前遍歷,什么時(shí)候從前向后遍歷如果是求右邊的名列前茅個(gè)最大,那么就是從右向左遍歷,構(gòu)建單調(diào)遞增棧。如果是求右邊的...詳情>>

2023-10-11 05:23:50
快速通道