9

私は、MySQL 用の独自のストレージ エンジンに取り組んでいます。これまでのところ、このストレージ エンジンは信頼性が高く正確に動作しますが、小さな (~100 MB) テーブルに対してのみ...セグメンテーション違反につながる:

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

falcon ストレージ エンジンでも同様の問題が報告されています。バグのコメントは、

行の見積もりが深刻に間違っている場合、ファイルソートで問題が発生するようです。

ほとんどの場合、ストレージ エンジンのどこかにバグがありますが、スタック オーバーフローによるデバッグは困難です。

于 2011-12-31T02:35:06.677 に答える