Skip to content

Commit

Permalink
update sql docs
Browse files Browse the repository at this point in the history
  • Loading branch information
fengzhao committed Dec 24, 2024
1 parent eef0239 commit c73566d
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions docs/foundmental/suoyin.md
Original file line number Diff line number Diff line change
Expand Up @@ -2354,6 +2354,17 @@ SELECT city,name,age FROM t WHERE city = '杭州' ORDER BY name LIMIT 1000;
> tips,sort_buffer 是 MySQL 分配给每个线程用于排序的内存。
> `sort_buffer`是 MySQL 分配给每个线程用于排序的内存。由参数`sort_buffer_size`控制其大小,如果要排序的数据量小于`sort_buffer_size,`排序就在内存中完成,如果排序数据量过大,就得使用外部文件(一般磁盘临时文件)辅助排序。外部排序一般使用**归并排序算法**
先假设数据都是以页(page)的形式存放在文件系统中,并且以页的形式读取到内存中(即,每次读取的最小单位为 1 页)。
外部归并排序的思路和归并排序(merge sort)一样,都是利用了分治算法。整个算法分成两个阶段:
- 阶段一:把所有数据分成小段,并对每一段进行排序(这里假设每一小段都能够存放在内存中所以我们可以用各种排序算法实现);
- 阶段二:把每一小段逐渐合并,最终完成全部排序。
简单说,就是通过索引字段查找符合条件的记录之后,然后把结果集需要的全部字段都加载到内存。最后再排序。
显而易见,全字段排序方法缺点:单行大的话占用内存空间。
Expand Down

0 comments on commit c73566d

Please sign in to comment.