正向:page_rec_get_next_low这里很容易看出就是通过rec next位置来确认下一条记录,这非常容易也非常简单,代价极小。
反向:page_rec_get_prev_const这个函数实际上可以简单的看一下就知道获取prev(上一条记录)就复杂了一些,它通过slot来进行定位,然后进行循环比对来获取上一条记录。三、反向(DESC)大概获取流程首先我们要清楚slot是干什么的,实际上在定位数据的时候会先定位到slot,然后再在slot内部做一个二分法。slot对于记录来讲是有序的,即逻辑上是顺序的(非物理顺序)。一个slot为2字节存储的是对应记录的偏移量,而一个slot最多包含8条记录,关于slot的讲解很多书籍都有说明,不再赘述。好了我们假设上一次读取到的prev row = G,而slot内部包含了A、B、C、D、E、F、G 7条记录。第一步定位到slot的开头即记录A的位置。
LOOP:设置本次 prev row = A通过A的rec next位置获取下一条记录 B是否 B == G{如果是则记录prev row= A 停止循环}否则{继续循环,下一次循环prev row = B }
这个循环一直要持续到 prev row = F ,即 G == G 成立才结束。循环次数为6次。
可以看到这样上一条记录就找到了,不过看起来代价比ASC方式大了很多很多。四、如何避免MySQL 8的降序索引值得拥有。或者规避这个问题。五、debug栈帧和结果1、DESC 多次循环

2、调用栈帧

 
 
                     
            
        













 
                    

 
                 
                    