Mysql入门需要懂的数据结构-01

涉浅水者得鱼虾,入深海着获蛟龙。那么就让我们一天进步一点。

As we all know ,电脑上的数据是存储在磁盘上的,但是数据未必是连续的,它由磁道决定分布的具体地址。那么我们今天就说说索引和基本的数据结构。

什么是索引?

答:索引是排好序的数据结构。

基本的数据结构有哪些?

  1. 二叉树

  2. B树

  3. B+树

  4. 红黑树
  5. Hash表

   二叉树特点:一个节点,左边的节点数据都比该节点小,右边的节点数据都比该节点大。 
   未使用原因:1,当列数据是递增数据时,结构会变成线形列表,查询效率大大降低;2,树的高度不可控,导致磁盘i o读写性    能降低; 

    B树特点   :1、叶节点深度相同,叶节点指针为空;2、索引元素不重复;3、节点中数据索引从左到右递增排序;
  未使用原因:1、mysql分配的page_size 大约是16kb,但是B树的节点上还存储着数据,这样就导致每一个页存的数据变少,树的高度增加,从而导致磁盘i o读写性能降低; 2、叶子节点没有指针互联,所以不利于范围查找;

    B+树特点:1、非叶子节点不存储数据,只存储冗余索引(可以存更多索引);2、叶子节点包含所有字段;3、叶子节点用指针连接,提高区间访问速度;(根部的所有索引可能已经提前加载到内存,所以查找的效率大大提高)
   使用原因:1、数的高度比较低;2、可以存更多的数据

   红黑树特点:1、从根节点到任意一个叶子节点的总路径是相同的。2、自平衡功能。
  未使用原因:树的高度不可控,i/0 消耗严重。

  Hash表:1、通过数组+链表的形式对 key 进行hash 处理,然后找到指定的数组,并放到链表中。
  未使用原因:适合定值查询,不适合范围查询;另外有hash 冲突问题

 

引申数据库引擎:

MyISam-->本地产生3个文件【非聚蔟索引】

  • .frm   表结构对象
  • .myi   索引文件
  • .myd  数据文件

InnoDB--->本地产生两个文件 【聚蔟索引】

  • .frm   表结构对象
  • .ibd    索引和数据文件

Mysql 没有创建主键索引时,会从第1列查找所有数据不想等的列,如果所有列都不满足,Mysql会创建伪列rowid。代表主键!!!

为什么非主键索引结构叶子节点存储主键值?

答:为了一致性 以及 节省空间。

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页