索引的各資料結構簡單介紹

2021-10-03 06:27:18 字數 1013 閱讀 3230

索引:幫助mysql高效獲取資料是排序好資料結構

索引資料結構:二叉樹、紅黑樹、hash表、b-tree

mysql資料結構b+樹

資料庫中不同的表可能有不同的儲存引擎

mylsam儲存引擎索引檔案(myi檔案)和資料檔案(myd檔案資料存放位址)是分離的(非聚集)

innodb儲存引擎索引實現(聚集)(支援事務)

1、表資料檔案本身就是按b+樹組織的乙個索引結構檔案

2、聚集索引-葉節點包含了完整的資料結構

3、為什麼innodb表必須有主鍵,並且推薦使用整型的自增主鍵

如果沒有主鍵或者預設使用uuid作為主鍵會使索引重複,導致b+樹重新分叉的情況,消耗效能

4、為什麼非主鍵索引結構葉子節點儲存的是主鍵值?(一致性和節省儲存空間)

在排好序的遞增序列如1,2,3...這樣的序列中沒有用

自平衡二叉樹,當資料過大如千萬級最壞需要23次磁碟io

hash表:索引方法除了b+樹外還有hash表

hash演算法md5、crc16等

hash對範圍查詢無能為力

可最多存放1142*1142*16大約2000多萬行資料

乙個葉子節點16kb,索引用bigint型別儲存大小8b,指標大小6b,故儲存索引大小約為14b

16kb/14b=1142

redis各資料結構編碼

資料結構 特點編碼 string 字串 redis 最基本的型別,string 型別是二進位制安全的 redis encoding int 如果乙個字串物件儲存的是整數值,並且這個整數值可以用long型別來表示 redis encoding embstr 如果字串物件儲存的是乙個字串值,並且這個字串...

索引 資料結構

子元素比根元素大,放在右邊,反之亦然。如果資料從1開始遞增,依然使用二叉樹的話,二叉樹就會變成鍊錶結構 本質上是二叉樹,如果某一邊的子元素與另一邊的子元素相比超過二個,會發生自旋,一種平衡方式。也叫二叉平衡樹 在自增資料量很大的時候,樹的層數太高,查詢效率也會變低 葉節點具有相同的深度,葉節點的指標...

資料結構介紹

當你決定看這篇文章,就意味著系統學習資料結構的開始。本節,我們先來講什麼是資料結構。什麼是資料結構 資料結構,直白地理解,就是研究資料的儲存方式。我們知道,資料儲存只有乙個目的,即為了方便後期對資料的再利用,就如同我們使用陣列儲存 是為了後期取得它們的加和值,無緣由的資料儲存行為是對儲存空間的不負責...