Mysql存储结构,
索引是一种加快查询速度的数据结构,常用索引结构有hash、B-Tree和B+Tree。本节通过分析三者的数据结构来说明为啥Mysql选择用B+Tree数据结构。
数据结构
Hash
B-Tree B+Tree Mysql为什么选择B+TreeMysql官网文档中写到InnoDB索引用的是 B-tree,但是底层用的是B+Tree。Mysql存储数据是以页为单位,默认一个页可以存放16K数据。假设B-Tree和B+Tree都是3层深度,表中每个记录为1K(假设的,一般不会这么大,别较真),那么三层深度的B-Tree存储 16 x 16 x 16 = 4096(比这个数还要少,因为每个页中还要存放指针和其它的数据)。B+Tree第一、二层存放的是key,假设是Long类型的主键,那么第一、二层每页存放数据约为 16 x 1024 / 8 = 2048,三层深度可以存放 2048 x 2048 x 16 = 6700W。MySQL查询过程是按页加载数据的,每加载一页就是一次IO操作,B+Tree进行三次IO可以查询6700W数据量。从这里也可以知道Mysql一般设置三层深度就足够了。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。