gpt4 book ai didi

MySQL聚簇索引物理结构及主键查询过程

转载 作者:知者 更新时间:2024-03-13 07:03:55 25 4
gpt4 key购买 nike

数据页分裂的过程,在你不停往表里灌入数据时,会搞出来一个个数据页,若你的主键非自增,他可能会有一个数据行挪动过程,保证你下一个数据页的主键值都大于上一个数据页的主键值。

假设有多个数据页,然后根据主键查询数据,直接查询是不行的,因为不知道主键到底在哪

若你要查id=4的数据,你咋知它在哪个数据页嘞?所以如果还是这样子,你就只能全表扫描,从第一个数据页开始,每个数据页都进入到页目录里查找主键,最坏情况下,所有数据页你都得扫描一遍,贼坑。

对此,就得针对主键设计个索引,针对主键的索引实际上就是主键目录:把每个数据页的页号,还有数据页里最小的主键值放在一起,组成一个索引的目录

有了上图的主键目录就好多了,直接到主键目录搜索id=3的数据,此时就会和每个数据页的最小主键来比,首先id=3大于了数据页2里的最小主键值1,接着小于了数据页8里的最小主键值4。于是就可定位到id=3的数据一定在数据页2。

假设有很多数据页,在主键目录里就会有很多数据页和最小主键值,此时完全可二分查找待查询id在哪个数据页。

所以这效率很高,类似上图的主键目录就能认为是主键索引。

数据页都是一坨坨连续数据,放在很多磁盘文件,所以只要你能根据主键索引定位到数据所在的数据页,此时假设我们有别的方式存储了数据页跟磁盘文件的对应关系,此时你就可以找到一个磁盘文件。

假设数据页在磁盘文件里的位置也就是offset偏移量,你也能知道,此时就能直接通过随机读定位到磁盘文件的某个offset偏移量位置,然后就能读取连续的一大坨数据页。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com