mysql的索引检索原理和存储引擎

  一:什么是BTree

   (1) BTree是平衡多路搜索树。它是在树的基础上演变而来的。它的每个节点就是个块。块里面的数据如下图:

    

    主键能对应唯一的一条数据。因为它是多个节点,必须就要有指针去记录节点。

    通过这个图发现,明显查找的性能提升了。首先IO的次数少了,也就是层数少了,IO的次数也变少了。并且采用数据块的形式,每次不用去加载一层(比如查找26的时候)。如果查找28的时候就要多加载一层。。

    但是要注意,这里的每个块的大小只有16KB的大小,互联网上一条数据就占1KB。也就是说,在这个块之内,我其实可以存更加多的指针(也就是指向别的节点),但是数据块占了比较多的空间。这样子节点变少,层数增加,这样IO的路数就会增多,这样性能就会下降。

    这样就演变出B+tree

 

二:  B+tree

  只有叶子节点才存数据,这个一个块就能存很多的数据,这样层数就减少了。也就是IO比较少了。性能就提升了。

  但是有个问题,原来的(BTree)树,数据块存数据,这样查询不是更加快得吗?B+Tree只是叶子节点存数据,上面得层数(IO走完)才到叶子节点,这样不是更加慢得吗?

  其实B+Tree到第3层这个级别,这个时候已经能处理2000W这个级别得数据!而且底层得数据(叶子节点)是有序得,更加容易取一个区间得数据。而且每个节点之前还有链表。。

 

三:啥是存储引擎

  

 

 

四:

     myisam和innodb的区别

  (1)myisam的引擎的特点

    

  (2)innodb存储引擎的特点

    

    注意:savepoint表示记录的保存点。。

    (3)myisam和innodb的比较

      

    (4)默认的存储引擎是innodb

 

posted @ 2022-07-02 00:30  田大叔  阅读(61)  评论(0编辑  收藏  举报