Sphinx 0.9.9リリース(r2117)を実行しています。
MySQLテーブルからデータを読み取るインデクサーを実行すると、次のエラーが発生します。
indexing index 'main'...
ERROR: index 'main': ., 888.4 MB
total 3629180 docs, 888448551 bytes
total 170.437 sec, 5212749 bytes/sec, 21293.30 docs/sec
ご覧のとおり、インデクサーは実際のエラーメッセージなしで888.4MBで停止します。完全なインデックスを削除して新しいインデックスを作成しようとしても、同じことが起こります。そうすると、新しく作成されたインデックスファイルは空になります。
システムは数か月間機能していましたが、テーブルの行数は約1,100万から約2,400万に増加しました。また、最小IDが1で、最大IDが60億を超えるため、IDギャップが非常に大きくなる必要があります。MySQLに何か問題があるのではないかと思ったので、すべての「ページング」クエリを実行する小さなスクリプトを作成しました。これは、インデックス作成中にSphinxによって実行される必要があります。
SELECT ... FROM ... WHERE id >= $start AND id <= $end
スクリプトは、エラーを返すことなく、すべてのID範囲のすべてのクエリを実行しました。
おそらく関連するSphinx構成の詳細:
sql_query_range = SELECT MIN(id), MAX(id) FROM offer
sql_range_step = 10240
SELECT o.id, ....
FROM offer o \
LEFT JOIN customer c ON c.id = o.customer_id \
WHERE ... AND o.id >= $start AND o.id <= $end AND o.last_update <= (SELECT last_full_index FROM index_update WHERE name = 'default')
インデクサーの冗長性を高める方法はありますか?
問題を絞り込む方法はありますか?