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

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

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);
* 1006 произошла ошибка подтверждения.* Честно говоря, я понятия не имею, что я могу изменить в своем хранилище, чтобы эта ошибка исчезла.Сначала выглядело, как будто я должен изменить параметр конфигурации sort_buffer_size - но даже установка этого значения выше размера таблицы действительно что-то меняет с этой ошибкой.

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

1 Ответ

4 голосов
/ 31 декабря 2011

Существует похожая проблема , сообщенная с механизмом хранения сокола.Комментарий в сообщении об ошибке:

Похоже, что проблема возникает в сортировке файлов, когда у вас есть серьезные ошибочные оценки строк.

Скорее всего, ошибка вваш механизм хранения где-то, но это сложно отладить с помощью переполнения стека.

...