filesort是通过相应的排序算法,将取得的数据在max_length_for_sort_data的默认值是1024。
---------------------------------------
mysql在使用双路排序的时候,需要根据排好序的key,第二次去读取真正要返回的数据的。这样就会用到read_rnd_buffer_size这个参数定义的缓冲区。将读取的数据放到这个缓冲区中。
随机读取数据缓冲区使用内存(read_rnd_buffer_size):和顺序读取相对应,当 MySQL 进行非顺序读取(随机读取)数据块的时候,会利用这个缓冲区暂存读取的数据。如根据索引信息读取表数据,根据排序后的结果集与表进行Join等等。总的来说,就是当数据块的读取需要满足一定的顺序的情况下,MySQL 就需要产生随机读取,进而使用到 read_rnd_buffer_size 参数所设置的内存缓冲区。
参数:read_rnd_buffer_size,默认8MB。
顺便说下顺序读取缓冲read_buffer_size
顺序读取数据缓冲区使用内存(read_buffer_size):这部分内存主要用于当需要顺序读取数据的时候,如无法使用索引的情况下的全表扫描,全索引扫描等。在这种时候,MySQL
按照数据的存储顺序依次读取数据块,每次读取的数据块首先会暂存在read_buffer_size中,当buffer
空间被写满或者全部数据读取结束后,再将buffer中的数据返回给上层调用者,以提高效率。
参数:read_buffer_size,默认2MB