• Python学习————MySQL索引和Innodb


    MySQL索引和Innodb:

    数据页结构,页是innodb存储引擎管理数据的最小磁盘单位,而B-TREE节点就是实际存放表数据结构的节点。

    innodb页由七个部分组成:

    img

    每一个页面中包含了两对header/trailer:
    内部的Page Header/Page Directory 关心的是页的状态信息,
    而Fil Header/Fil Trailer 关心的是记录页的头信息
    
    在页的头部和尾部之间就是用户记录和空闲空间了,每一个数据页中
    都包含了Infimum和 Supremum 这两个虚拟的记录(可以理解为占位符)
    Infimuim 记录时比页中任何逐渐值都要小的值,Supremum 时该页中的最大值
    

    img

    User Records 就是整个页面中真正用于存放行记录的部分,而Free Space 就是空余空间了,
    他是一个链表的数据结构,为了保证插入和删除的效率,整个页面并不会按照主键的顺序对所有的
    记录进行排序,它会自动从左侧向右寻找空白节点进行插入,行记录在物理存储上并不是按照顺序的,
    他们之间的顺序是由next_record指针控制的
    B+ 树在查找对应的记录时,并不会直接从树中找出对应的行记录,它只能获取记录所在的页,
    将整个页加载到内存中,再通过 Page Directory 中存储的稀疏索引和 n_owned、next_record 
    属性取出对应的记录,不过因为这一操作是在内存中进行的,所以通常会忽略这部分查找的耗时。
    

    MySQL索引:

    索引是数据库中非常重要的一个概念,它主要是存储引擎用来快速定位记录,提升数据库的性能
    ,减轻数据库服务器的负担的作用。对索引进行优化是对查询性能优化的最有效的手段,他能够轻松的
    提高查询的性能,但需要注意的是查询记录时每次只能使用一个索引,因为和全表扫描和只是用一个索引的
    速度比起来,去分析两个索引二叉树更耗费时间。
    InnoDB 存储引擎在绝大多数情况下使用 B+ 树建立索引,这是关系型数据库中查找最为常用和有效的索引,
    但是 B+ 树索引并不能找到一个给定键对应的具体值,它只能找到数据行对应的页,数据库把整个页读入到
    内存中,并在内存中查找具体的数据行。
    

    img

    B+ 树是平衡树,它查找任意节点所耗费的时间都是完全相同的,比较的次数就是 B+ 树的高度;
    在这里,我们并不会深入分析或者动手实现一个 B+ 树,只是对它的特性进行简单的介绍。
    数据库中的 B+ 树索引可以分为聚集索引(clustered index)和辅助索引(secondary index),
    它们之间的最大区别就是,聚集索引中存放着一条行记录的全部信息,
    而辅助索引中只包含索引列和一个用于查找对应行记录的『书签』。
    

    注:在mysql中,可以把主键理解成聚集索引,如果没有创建,系统会自动创建一个隐含列为表的聚集索引。

    本文摘自:https://blog.csdn.net/marco__/article/details/81666512

  • 相关阅读:
    sqlserver 表操作 SQL篇
    C#知识点汇总
    DDL
    sqlserver2008简介
    面向对象继承
    IO文件流
    【帅刺猬课堂】Winform中使用WPF的UserControl
    KS Gantt甘特图控件通过递归加载无限层级的数据
    Office 每次打开需要重新配置的问题修复方法
    扩展方法
  • 原文地址:https://www.cnblogs.com/x945669/p/13647575.html
Copyright © 2020-2023  润新知