9

我正在开发自己的 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 存储引擎知道如何解决这个问题?

4

1 回答 1

4

猎鹰存储引擎报告了类似的问题。错误中的评论是,

当您的行估计严重错误时,问题似乎出现在文件排序中。

很可能您的存储引擎中的某个地方存在错误,但通过堆栈溢出进行调试是一件困难的事情。

于 2011-12-31T02:35:06.677 回答