MySQL报错:Out of sort memory, consider increasing
server sort buffer size
今天一个错误反馈到我这边,我还是第一次遇到这种错误,然后就分析了一下,因为以前曾经做过filesort流程
分析,新书《深入理解MySQL主从原理》中也有一节专门介绍这部分。这里简单做了一下debug后分析出原
因。
问题版本5.7.27,我的测试版本5.7.22
一、问题模拟
mysql> show create table testsorterr3 \G
*************************** 1. row ***************************
Table: testsorterr3
Create Table: CREATE TABLE `testsorterr3` (
`id` int(11) DEFAULT NULL,
`name1` varchar(510) NOT NULL,
`name2` varchar(510) NOT NULL,
UNIQUE KEY `name1` (`name1`,`name2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> select count(*) from testsorterr3 ;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
mysql> show variables like 'sort_buffer_size';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| sort_buffer_size | 32768 |
+------------------+-------+
1 row in set (0.02 sec)
mysql> select id from testsorterr3 order by id;
ERROR 1038 (HY001): Out of sort memory, consider increasing server sort buffer size
当然问题解决很简单,加大sort_buffer_size 设置即可,但是这里实际上为32K,我只是按照一个int类型的4字
节类型进行排序而已,并且表中一条数据都没有报错显然有点让人摸不到头脑说sort_buffer_size设置小了,再
说sort_buffer_size不够不是可以使用临时文件做归并排序嘛?
评论