Mysql 为什么用B+树作为数据结构?

386 阅读1分钟

Mysql为什么采用b+树作为数据结构?

上结论

  • 树高度较低,三层高度的树就能够存储千万级别的数据。
  • 所有的数据都存放在叶子结点,结合树高度。每次查询的目标数据的效率稳定,高度基本固定。
  • 所有的数据都是依次排好序的,在范围查询时效率更高。

问题-:为什么三层高度的数据结构就能存储千万级别的数据?

image.png

  • 在聚集索引中,所有的数据都是存放在b+树最底层的叶子节点上。非叶子节点只存储主键索引(默认有主键)。
  • 我们把主键设置为bigint类型,那么所占用大小就是8B。然后指针占用的大小是6B
  • mysql默认的是以页为单位存储数据的也就是16KB,SHOW GLOBAL STATUS like 'Innodb_page_size’;
  • 也就是说 第一层能够存储的索引数量为:16kb/14b = 1170 个 索引,同理第二层就是 1170*1170=1368900 个
  • 第三层每一个索引存放着表中一行记录。我们假设一行记录为 1kb 吧。所以一页就只能存16个
  • 那么三层一起存放的数据量就是 1170 * 1170 * 16 = 21,902,400