龙空技术网

mysql filesort文件排序详解#java面试

Java大咖秀 115

前言:

此刻朋友们对“mysql排名排序”可能比较讲究,大家都需要学习一些“mysql排名排序”的相关内容。那么小编在网摘上收集了一些对于“mysql排名排序””的相关知识,希望我们能喜欢,看官们一起来了解一下吧!

大家好,今天详细给大家讲解一下mysql文件排序的原理。

mysql文件排序分为两种方式,第一个是单路排序,第二个是双路排序。

·单路排序是一次性取出满足条件行的所有字段。然后在file filer中进行排序。

·排序完成后再根据需要取出需要的排序字段,和能定位到行数据的id。然后在word file 中进行排序。

排序完成后再根据需要取出相应的字段。买搜口通过系统容量max file for short file 的大小和查询字段的总大小来判断,是使用单路排序还是双路排序。

如果它的大小小于max file for salt file file 则使用单路排序。如果它的大小大于max file for salt file ole则使用双路排序。

接下来讲一讲单路排序的详细过程。

·第一步:从锁引中找到满足条件的数据id。

·第二步:根据数据id查到所有的字段值,放到salt file 中。

·第三步:从锁引中找到下一个满足条件的数据id。

·第四步:重复第二步的操作,直到找不到满足条件的数据后。

·第五步:对file file中的数据按排序字段进行排序。

·第六步:它就会返回给客户端。

·接下来讲一讲双路排序的详细过程。

·双录排序的第一步:它也是从锁引中找到满足条件的锁引数据id。

·第二步:根据id取出整个数据行,将排序字段和id 字段放到 short 八份中。

·第三步:从缩影中找到下一个满足条件的数据id。

·第四步:重复查找,直到找不到满足条件的数据。

·第五步:是对 file 中的数据,按排序字段进行排序。

·第六步:便利好short file 中的id和排序字段。根据id回表查询到所有的字段,返回给客户端。其实比较两个排序模式,单路排序会把所有的字段都放到shortbuff中。而双路排序只会把id和需要排序的字段放到 shortbuff中。

然后根据id回到原表查到所有的字段返回给客户端。

如果在实际的场景中,var file sort的配置比较小,就可以把100g file store配置的相对比较小一点,然后让走双路排序,这样可以一次性排更多的数据行。如果有条件的话可以把 short file 配置的相对大一点。配置 max for short date也相对大一点,这样可以使用单路排序。

所以麦搜口通过控制max file 的大小来控制使用不同的排序模式,这样可以在不同的场景下从而提升排序效率。有一点需要注意的就是,虽然在shortfile中进行排序的效率,高于在磁盘中的排序,但是不能因为这个随意调整shortfile的大小,因为卖搜口的好,多参数都是经过优化的,不要随意调整。

标签: #mysql排名排序