作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发我自己的 MySQL 存储引擎。到目前为止,这个存储引擎工作可靠且正确 - 但仅适用于小型(~100 MB)表......对于大表,当我尝试使用 order by 执行查询时,我遇到了段错误,所以像这样的事情会导致段错误:
select * from item order by i_author;
所以我在 Debug模式下编译了 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 存储引擎的人知道如何解决这个问题吗?
最佳答案
有一个类似的issue与猎鹰存储引擎一起报告。错误中的评论是,
It seems that the problem occurs in filesort when you have row estimates that are seriously wrong.
很可能您的存储引擎中某处存在错误,但很难通过堆栈溢出进行调试。
关于c++ - 我自己的存储引擎因为 sort_buffer 太小而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475690/
我正在开发我自己的 MySQL 存储引擎。到目前为止,这个存储引擎工作可靠且正确 - 但仅适用于小型(~100 MB)表......对于大表,当我尝试使用 order by 执行查询时,我遇到了段错误
我是一名优秀的程序员,十分优秀!