mysql innodb 索引到底是b 樹還是b樹

2021-04-11 05:56:14 字數 1872 閱讀 2430

1樓:文成上學去了

先從資料結構的角度來答。

題主應該知道b-樹和b+樹最重要的一個區別就是b+樹只有葉節點存放資料,其餘節點用來索引,而b-樹是每個索引節點都會有data域。

這就決定了b+樹更適合用來儲存外部資料,也就是所謂的磁碟資料。

從mysql(inoodb)的角度來看,b+樹是用來充當索引的,一般來說索引非常大,尤其是關係性資料庫這種資料量大的索引能達到億級別,所以為了減少記憶體的佔用,索引也會被儲存在磁碟上。

那麼mysql如何衡量查詢效率呢?磁碟io次數,b-樹(b類樹)的特定就是每層節點數目非常多,層數很少,目的就是為了就少磁碟io次數,當查詢資料的時候,最好的情況就是很快找到目標索引,然後讀取資料,使用b+樹就能很好的完成這個目的,但是b-樹的每個節點都有data域(指標),這無疑增大了節點大小,說白了增加了磁碟io次數(磁碟io一次讀出的資料量大小是固定的,單個資料變大,每次讀出的就少,io次數增多,一次io多耗時啊!),而b+樹除了葉子節點其它節點並不儲存資料,節點小,磁碟io次數就少。

這是優點之一。

另一個優點是什麼,b+樹所有的data域在葉子節點,一般來說都會進行一個優化,就是將所有的葉子節點用指標串起來。這樣遍歷葉子節點就能獲得全部資料,這樣就能進行區間訪問啦。

至於mongodb為什麼使用b-樹而不是b+樹,可以從它的設計角度來考慮,它並不是傳統的關係性資料庫,而是以json格式作為儲存的nosql,目的就是高效能,高可用,易擴充套件。首先它擺脫了關係模型,上面所述的優點2需求就沒那麼強烈了,其次mysql由於使用b+樹,資料都在葉節點上,每次查詢都需要訪問到葉節點,而mongodb使用b-樹,所有節點都有data域,只要找到指定索引就可以進行訪問,無疑單次查詢平均快於mysql(但側面來看mysql至少平均查詢耗時差不多)。

總體來說,mysql選用b+樹和mongodb選用b-樹還是以自己的需求來選擇的。

b樹和二叉排序樹,b樹和b+樹的區別

2樓:

先從資料結構的角度來答。

題主應該知道b-樹和b+樹最重要的一個區別就是b+樹只有葉節點存放資料,其餘節點用來索引,而b-樹是每個索引節點都會有data域。

這就決定了b+樹更適合用來儲存外部資料,也就是所謂的磁碟資料。

從mysql(inoodb)的角度來看,b+樹是用來充當索引的,一般來說索引非常大,尤其是關係性資料庫這種資料量大的索引能達到億級別,所以為了減少記憶體的佔用,索引也會被儲存在磁碟上。

那麼mysql如何衡量查詢效率呢?磁碟io次數,b-樹(b類樹)的特定就是每層節點數目非常多,層數很少,目的就是為了就少磁碟io次數,當查詢資料的時候,最好的情況就是很快找到目標索引,然後讀取資料,使用b+樹就能很好的完成這個目的,但是b-樹的每個節點都有data域(指標),這無疑增大了節點大小,說白了增加了磁碟io次數(磁碟io一次讀出的資料量大小是固定的,單個資料變大,每次讀出的就少,io次數增多,一次io多耗時啊!),而b+樹除了葉子節點其它節點並不儲存資料,節點小,磁碟io次數就少。

這是優點之一。

另一個優點是什麼,b+樹所有的data域在葉子節點,一般來說都會進行一個優化,就是將所有的葉子節點用指標串起來。這樣遍歷葉子節點就能獲得全部資料,這樣就能進行區間訪問啦。

至於mongodb為什麼使用b-樹而不是b+樹,可以從它的設計角度來考慮,它並不是傳統的關係性資料庫,而是以json格式作為儲存的nosql,目的就是高效能,高可用,易擴充套件。首先它擺脫了關係模型,上面所述的優點2需求就沒那麼強烈了,其次mysql由於使用b+樹,資料都在葉節點上,每次查詢都需要訪問到葉節點,而mongodb使用b-樹,所有節點都有data域,只要找到指定索引就可以進行訪問,無疑單次查詢平均快於mysql(但側面來看mysql至少平均查詢耗時差不多)。

總體來說,mysql選用b+樹和mongodb選用b-樹還是以自己的需求來選擇的。

單克隆抗體用的到底是效應B細胞還是B淋巴細胞

嚴格來來講,是效應b淋巴細胞 源。效應b淋巴細胞屬於baib淋巴細胞的一du種,是已經被抗原刺激而zhi分化的b淋巴細胞 漿細dao胞 可以分泌特異性抗體。而未受到抗原刺激的b淋巴細胞是不能分泌特異性抗體的。只不過,教材一般沒有去刻意強調這一點,不必過於糾結。只要知道融合的b淋巴細胞是效應b淋巴細胞...

使A成立的充分非必要條件是B請問到底是B可以推出A但是

第一問 b可以推出a但是a不能推出b 第二問 這與a是b的充分非必要條件恰恰相反 是b可以推出a但是a不能推出b,和 a是b的充分非必要條件 不是一回事,a是b的必要非充分條件 a是b的充分非必要條件。是a可以推出b。還是b可以推出a?設有兩個條件a和b 注意a b順序 a為第一個條件,b第二個條件...

平安智盈人生終身壽險萬能B到底是怎麼個事

1。裡面的錢扣保障費用還可以夠扣多少年才能扣到裡面沒錢合同終止?我們今年54.看見你的年齡,我在心裡狠狠的詛咒了那個業務員。這個扣費是終身的,或者扣到賬戶裡沒錢,你這個年齡,扣費已經很高了,越往後越高。2.這個險到底事保什麼的,說是壽險,讓交10年,交夠10年後產生的利息夠扣每年費用的嗎?聽說年紀越...