Mysql資料庫索引B 樹實現的一些學習筆記

2021-09-25 01:16:14 字數 900 閱讀 2582

innodb儲存引擎中有頁(page)的概念

頁是其磁碟管理的最小單位。innodb儲存引擎中預設每個頁的大小為16kb,可通過引數innodb_page_size將頁的大小設定為4k、8k、16k,在mysql中可通過如下命令檢視頁的大小:

mysql> show variables like 'innodb_page_size';

二叉樹的深度會影響查詢的料率,設計引擎的目的是盡可能多的存更多的資料的情況下減少二叉樹的深度。

一次磁碟i/o的消耗很大,遠遠大於記憶體中查詢的效率,所以會通過一次磁碟i/o查詢到多個索引存到記憶體,然後在記憶體中查詢(高效),此為b樹較紅黑樹的優點

b+樹只有葉子節點才儲存資料data,非葉子節點只儲存索引,每頁16k的大小大概可以儲存1710(bigint8位元組 指標6位元組=14位元組,16k/14=1710),所以對於儲存資料一般深度2-4的b+樹就可以夠用。

hash比btree的優點:hash只適合準確查詢,一次雜湊可以得到磁碟儲存位置,但是不適合範圍查詢,需要遍歷。

資料表對應檔案:

myisam儲存引擎:不支援事務   非聚集索引(索引和資料分散儲存)

*.frm :儲存表的定義,表的結構檔案

*.myd :儲存表的資料  d: data

*.myi: 索引字段儲存表的位置 i: index  b+樹儲存位置

innodb儲存引擎: 聚集索引(資料索引和資料表儲存在一起)(葉子節點包含完整的資料記錄)

*.frm

*.ibd:innodb的表資料檔案和索引檔案

資料結構視覺化**推薦:

b+tree在資料庫索引上擁有獨特優勢的原因

資料庫索引 B樹索引

b樹索引能自動的保持和資料檔案大小相適應的索引層次。通過對所使用的儲存塊空間進行管理,使每個塊的充滿程度在半滿和全滿之間。這樣的索引不再需要溢位塊。b 樹的資料結構 通常b樹有三層 跟 中間層和葉。葉子節點是乙個塊,它儲存了n個 鍵值,資料記錄指標 對,外加乙個指向下乙個兄弟葉子節點的指標。葉子節點...

資料庫索引 B 樹

目錄特點 例項 查詢 插入 刪除 總結b 樹是b樹的變種,查詢效率比b更高。為什麼更高?往下看。參考 1.有k個子樹的中間節點包含有k個元素 b樹中是k 1個元素 每個元素不儲存資料,只用來索引,所有資料 都儲存在葉子節點。2.所有的葉子結點中包含了全部元素的資訊,及指向含這些元素記錄的指標,且葉子...

資料庫索引(B樹,B 樹,雜湊)

一.什麼是索引?索引的目的就是便於快速查詢。一本書的索引就是目錄,可以讓我們快速定位到要查詢的內容 資料庫的資料是以記錄的方式存在的,所以索引的目的就是便於查詢某一些記錄。索引型別 常見的資料庫書籍中的關於索引類別的一些稱呼 唯一索引 不允許其中任何兩行具有相同值的索引 使用主鍵和候選鍵建立的索引就...