Мой собственный механизм хранения данных падает из-за слишком маленького sort_buffer

Я работаю над собственным механизмом хранения данных для MySQL. Пока этот механизм хранения работает надежно и правильно - но только для небольших (~100 МБ) таблиц... Для больших таблиц я получаю ошибку сегментации, когда пытаюсь выполнить запрос с порядком по, так что что-то вроде этого приводит к ошибке сегментации:

select * from item order by i_author;

Поэтому я скомпилировал MySQL в режиме отладки и увидел, что в функции merge_buffers в файле filesort.cc теперь есть ошибка утверждения:

/* The following will fire if there is not enough space in sort_buffer */
DBUG_ASSERT(maxcount!=0);

Честно говоря, я понятия не имею, что я могу изменить в своем движке хранения, чтобы эта ошибка исчезла. Сначала казалось, что мне нужно изменить параметр конфигурации sort_buffer_size - но даже установка этого параметра больше размера таблицы ничего не меняет в этой ошибке.

Есть ли у кого-нибудь, кто умеет писать движки для хранения MySQL, идеи, как это решить?

9
задан Markus Pilman 12 December 2011 в 14:17
поделиться