讀書筆記-MySQL營運內參08-索引實現原理1

來源:互聯網
上載者:User

標籤:定義   二級索引   記憶體   管理   節點   分享   刪除   方式   發展   

B樹和B+樹的區別

1,B樹的葉子節點和內節點存在的都是資料行的所有資訊,B+樹的內節點值存放鍵(索引)資訊,資料都在葉子節點上。

2,由於B樹鍵和值的所有資訊,所以每頁的儲存的資料行相對較少,隨資料發展,該樹發成為一個高瘦的樹;相反,B+樹的內節點只存放索引值,所以會成為一個矮胖的樹。所以就搜尋而言,B+樹的效率比B樹的效率要高。

3,B樹的查詢效率和所查的鍵在B樹種的位置有關;而B+樹的複雜度對於某個B+樹來說是固定的。

4,B樹整體而言相對B+樹可以節省儲存空間,但是插入刪除的複雜度明顯增加,而且效能不平衡(有時很快能找到合適位置,有時需要消耗大量的IO)。而B+樹是一種很好的折中方案。查詢過程穩定,插入刪除操作一般最多也是進行一次分裂(合適的位置的節點儲存慢了,需要分裂)。

5,B樹種所有的資料只儲存一次。B+樹種除了葉子節點儲存所有資料以外,還需要內節點儲存鍵的資料。所以在佔用空間方面,B+樹的方式比B樹佔用空間要多一些,但是B+樹的方式提升了整體效能。

 

索引的設計

影響電腦任務的三個因素:記憶體、處理器和磁碟的速度。

磁碟的效能與讀寫順序有關,順序讀寫比隨機讀寫要快得多。

索引設計儲存方式:

1,將磁碟空間或檔案劃分未許多大小相同的塊或頁,每個塊可以儲存多個行。

2,在一個塊內,資料通過鏈表或者數組的方式來進行組織管理。

3,在一個塊內,所有的資料也是按照索引值排序的,可以通過經典的二分尋找快速定位到相應的資料行。

4,通過塊來承載資料,通過B+樹來組織不同的塊之間的關係。

5,通過內節點的索引值和一個位置資訊、內節點和下層節點或者葉子節點的指標,可以很方便的找到該內節點的子節點。

 

叢集索引和二級索引

儲存所有資料的索引成為叢集索引,叢集索引的順序是按照主鍵(可以是Rowid或者自增ID或者使用者佈建的其他主鍵)排序。

回表,二級索引上的資料列不能全部覆蓋鎖需要的查詢,這就需要通過二級索引的指標尋找到叢集索引。

叢集索引的結構:

索引結構:[主鍵列][TRXID][ROLLPTR][其他建表時建立的非主鍵列]

參與記錄比較的列:主鍵列

內節點Key列:[主鍵列]+pageno指標

注意:上面所說的主鍵,若使用者有定義主鍵就是指使用者定義的主鍵;否則是系統給的不可見的主鍵(Rowid)

二級索引的結構

索引結構:[索引列][主鍵列]

參與記錄和比較的列:[索引列][主鍵列]

內節點的key列:[索引列][主鍵列]+pageno

 

神奇的B+樹網路

 

讀書筆記-MySQL營運內參08-索引實現原理1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.