我正在开发自己的 MySQL 存储引擎。到目前为止,这个存储引擎工作可靠且正确 - 但仅适用于小型(~100 MB)表......对于大表,当我尝试使用 order by 执行查询时,我遇到了分段错误,所以这样的事情会导致段错误:
select * from item order by i_author;
所以我在调试模式下编译了 MySQL,并且看到,filesort.cc 中的 merge_buffers 函数中现在有一个断言失败:
/* The following will fire if there is not enough space in sort_buffer */
DBUG_ASSERT(maxcount!=0);
老实说,我不知道我可以在存储引擎中进行哪些更改以使此错误消失。首先看起来我必须更改配置参数sort_buffer_size - 但即使将此设置设置为高于表的大小也会改变此错误的任何内容。
有谁知道如何编写 MySQL 存储引擎知道如何解决这个问题?