2

MySQL 経由で sphinxse を使用して、インデックス付きの大きなテキスト データセットにアクセスしています。結果セットのサイズはギガバイト単位です。ただし、データセットが 16MB を超えると、MySQL が次のエラーでクエリを停止することに気付きました。

1430 (HY000): 外部データ ソースに対するクエリの処理中に問題が発生しました。データ ソース エラー: searchd 応答の長さが正しくありません (長さ = 16777523)

length は、MySQL を怒らせた結果セットの長さを示します。Sphinx のスタンドアロン検索プログラムで同じクエリを試しました。それは正常に動作します。MySQL と Sphinx の両方で可能なすべての変数を試しましたが、何も役に立ちません。

Sphinx 0.9.9 rc-2 と MySQL 5.1.46 を使用しています。

ありがとう

4

2 に答える 2

2

私はついに問題を解決しました。mysql 用の sphinx プラグイン (SphinxSE) は、ソース コードの結果セットに 16 MB の応答制限をハードコーディングしていることが判明しました (悪い悪い悪いソース コード)。ファイル ha_sphinx.cc で SPHINXSE_MAX_ALLOC を 1*1024*1024*1024 に変更したところ、すべて正常に動作するようになりました。

于 2010-05-02T01:57:06.590 に答える
0

おそらく max_allowed_pa​​cket をデフォルト値の 16M から増やす必要があります:

mysqlのドキュメントから

クライアントとサーバーの両方に独自の max_allowed_pa​​cket 変数があるため、大きなパケットを処理する場合は、クライアントとサーバーの両方でこの変数を増やす必要があります。

mysql クライアント プログラムを使用している場合、デフォルトの max_allowed_pa​​cket 変数は 16MB です。より大きな値を設定するには、次のように mysql を開始します。

シェル> mysql --max_allowed_pa​​cket=32M

これにより、パケット サイズが 32MB に設定されます。

于 2010-05-01T03:31:06.250 に答える