MySQL排序使用情况

数据库 MySQL
MySQL会把在内存中排序的结果存到临时文件中,MySQL 找到所有记录之后,会再次排序,Sort_merge_passes也会增加。

MySQL排序会增加Sort_merge_passes ,MySQL 就会把每次在内存中排序的结果存到临时文件中,找到记录后,会再次排序。

MySQL排序使用情况:

  1. mysql> show global status like 'sort%';  
  2. +-------------------+------------+  
  3. | Variable_name | Value |  
  4. +-------------------+------------+  
  5. | Sort_merge_passes | 29 |  
  6. | Sort_range | 37432840 |  
  7. | Sort_rows | 9178691532 |  
  8. | Sort_scan | 1860569 |  
  9. +-------------------+------------+ 

Sort_merge_passes 包括两步。MySQL 首先会尝试在内存中做排序,使用的内存大小由系统变量 Sort_buffer_size 决定,如果它的大小不够把所有的记录都读到内存中,MySQL 就会把每次在内存中排序的结果存到临时文件中,等 MySQL 找到所有记录之后,再把临时文件中的记录做一次排序。

再次排序就会增加 Sort_merge_passes。实际上,MySQL 会用另一个临时文件来存再次排序的结果,所以通常会看到 Sort_merge_passes 增加的数值是建临时文件数的两倍。

因为用到了临时文件,所以速度可能会比较慢,增加 Sort_buffer_size 会减少 Sort_merge_passes 和 创建临时文件的次数。但盲目的增加 Sort_buffer_size 并不一定能提高速度。

另外,增加read_rnd_buffer_size(3.2.3是record_rnd_buffer_size)的值对排序的操作也有一点的好处。


 

 

【编辑推荐】

MySQL慢查询的启用方法

Mysql多表查询的实现

Liunx下修改MySQL字符集的方法

带您了解mysql变量

MySQL root用户密码忘记的处理方法

责任编辑:段燃 来源: 互联网
相关推荐

2022-07-13 14:26:26

Linux

2010-05-12 15:14:59

subversion管

2015-11-09 15:32:34

TorTor网络隐私网络

2018-07-06 14:52:49

Docker容器云服务

2017-01-18 21:57:14

2009-12-14 17:25:20

Linux操作系统

2010-11-16 11:40:04

Oracle查询表空间

2009-02-03 09:49:00

FTP空间共享

2020-12-07 18:19:46

Common Lisp方言编程

2014-04-24 16:26:31

UbuntuUbuntu 磁盘Linux基础

2022-11-11 14:48:41

内存top命令

2009-06-30 14:11:00

Hibernate缓存

2010-06-02 11:06:15

Linux 内存监控

2017-11-30 18:42:22

PythonCPU脚本分析

2010-02-03 17:16:58

Linux内存使用

2021-03-26 07:17:38

Linux命令磁盘

2010-09-26 12:45:29

2010-02-01 15:47:04

C++内联函数

2020-06-17 14:10:01

Python内存程序

2022-09-26 09:44:10

Linux
点赞
收藏

51CTO技术栈公众号