2020-11-16 B-tree/B+tree

摘要

image.png
image.png

image.png

数据库中既使用了B-TREE 也使用了B+TREE
b+tree用来维护数据行(存储了唯一id和row,内部节点只存id【key】,叶子节点存id及对应row【key:value】)
而btree用来维护辅助索引(存储了某列的索引【key】和唯一id【value】,每个节点既包含key也包含value)

如果不通过索引查询数据行时,数据库会通过遍历b+tree叶子节点中数据行的方式查询目标数据
如果通过索引查询数据行时,数据库首先 会通过B-tree查询到 值是目标索引的key并读取该key对应的值,这个值实际上唯一id 也就是存在B+tree中的key,于是此时数据库再到B+tree中 查询值是该唯一id的key,最终得到该key下对应的的数据记录。

留个问题:联合索引 如何维护btree的?

参考:
重点:https://dzone.com/articles/database-btree-indexing-in-sqlite
https://www.programiz.com/dsa/b-tree
https://condor.depaul.edu/ichu/csc416/notes/notes9/BTree.htm
https://condor.depaul.edu/~ichu/csc416/notes/notes9/heap.htm
http://www.ovaistariq.net/733/understanding-btree-indexes-and-how-they-impact-performance/#.X7M3KhMzbOQ

https://cstack.github.io/db_tutorial/parts/part7.html
https://sqlity.net/en/2445/b-plus-tree/

have not read
http://users.informatik.uni-halle.de/~brass/dbi05/c4_index.pdf

你可能感兴趣的:(2020-11-16 B-tree/B+tree)