mysql的filesort实现原理

本文探讨了MySQL中单路排序与双路排序的原理,如何根据缓存大小调整策略以提升性能。介绍了如何在空间与时间、或时间与空间之间权衡,以适应不同硬件环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql中的filesort底层的排序方式总共分成两种,同时也是针对不同的情况而进行设置的。

1、单路排序:这一种排序是将存储的所有字段的信息都从硬盘中读取到缓存文件(sort buffer)之中进行排序。

2、双路排序:也称为回表排序,这种排序方式主要是先在硬盘中筛选出所需要的字段,以及记录本行所对应的id(这里的id可以是主键),在sort buffer中先对其进行排序,当排序完成之后再运用id去硬盘文件中将每一个记录所对应的剩余信息读取到sort buffer之中。

通过这两个排序方法可以清晰的知道,mysql针对每一台计算机的缓存总大小进行了一个优化,如若计算机的缓存较大,便会使用单路排序,这种排序的方法所涉及到的io操作较少,速度较快。当计算机的缓存较小时便会使用双路排序,节省缓存空间。

上述的操作是我们在计算机中为了提升代码的性能,可行度等经常使用的一种方法,就是将空间换时间,或者是时间换空间的想法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值