MySQL系列-物理存储结构和索引算法

MySQL系列-物理存储结构和索引算法

系列文章说明

MySQL系列文章包含了软件安装、具体使用、备份恢复等内容,主要用于记录个人的学习笔记,主要使用的MySQL版本为5.7.28,服务器系统版本为CentOS 7.5。本章节内容物理存储结构和索引算法。

物理存储结构

物理存储结构 扇区


机械硬盘结构如下:
MySQL系列-物理存储结构和索引算法
每个磁道上一个弧段被称之为一个扇区(图见绿色部分)。扇区是磁盘的最小组成单元,通常是512字节。(由于不断提高磁盘的大小,部分厂商设定每个扇区的大小是4096字节)
MySQL系列-物理存储结构和索引算法

物理存储结构 block


block是操作系统最小的存储单元,在进行文件系统制作时,可以指定block大小,默认block大小为4KB,即一个block由8个连续的扇区组成。
MySQL系列-物理存储结构和索引算法
linux系统查看文件系统的block大小


stat -f /

MySQL系列-物理存储结构和索引算法

物理存储结构page页


页是InnoDB存储引擎磁盘管理的最小单位,每个页默认16KB。即默认情况下,一个页由4个block组成。
MySQL系列-物理存储结构和索引算法
查看mysql页大小:


select @@innodb_page_size;

MySQL系列-物理存储结构和索引算法

物理存储结构 extent区


在 InnoDB 存储引擎中,一个区会分配 64 个连续的页。因为 InnoDB 中的页大小默认是 16KB,所以一个区的大小是 64*16KB=1MB。在任何情况下每个区大小都为1MB,为了保证页的连续性,InnoDB存储引擎每次从磁盘一次申请4-5个区。默认情况下,InnoDB存储引擎的页大小为16KB,即一个区中有64个连续的页。

物理存储结构 segment段


    段(Segment)由一个或多个区组成,区在文件系统是一个连续分配的空间(在 InnoDB 中是连续的 64 个页),不过在段中不要求区与区之间是相邻的。段是数据库中的分配单位,不同类型的数据库对象以不同的段形式存在。当我们创建数据表、索引的时候,就会相应创建对应的段,比如创建一张表时会创建一个表段,创建一个索引时会创建一个索引段。

物理存储结构 table space表空间


表空间(Tablespace)是一个逻辑容器,表空间存储的对象是段,在一个表空间中可以有一个或多个段,但是一个段只能属于一个表空间。

物理存储结构 总结


MySQL系列-物理存储结构和索引算法
段:一个表就是一个段,可以由1个或者多个区构成
区:一个区(簇),默认1M,连续的64个pages构成
页:一个页,默认16KB,连续的4个OS block

索引

    何为索引?索引就类似于书的目录,方便我们快速查找内容,索引的目的在于提高查询或检索效率。

算法 二分查找法(binary search)


二分查找法也称为折半查找法,其基本思想是:将记录按有序化排列,在查找过程中采用跳跃式方式查找。
比如需要在以下数据中查找53:
MySQL系列-物理存储结构和索引算法

算法 二叉树和平衡二叉树


在二叉查找树中,左子树的键值总是小于根的键值,右子树的键值总是大于根的键值。
平衡二叉树和二叉树原理是一致的,但是由于二叉树的一些局限性(不自动平衡树),演变出了平衡二叉树。
MySQL系列-物理存储结构和索引算法
二叉树插入数据:
MySQL系列-物理存储结构和索引算法

平衡二叉树的左旋:

逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,而自己成为自己的左孩子。

MySQL系列-物理存储结构和索引算法

平衡二叉树的右旋:

顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子。
MySQL系列-物理存储结构和索引算法

算法B+ tree


B+Tree算法主键索引:
MySQL系列-物理存储结构和索引算法
tree:叶节点之间存放了相邻节点的数据起始范围

索引查找:
MySQL系列-物理存储结构和索引算法

end

猜你喜欢

转载自blog.51cto.com/15082392/2656025
今日推荐