0

mirrorChangesオプションは、GORM / Hibernateを介して行われたすべての変更をミラーリングするため、データベースに外部変更を加えていない場合は、bulkIndexOnStartupが必要ですか?

問題は、データセットが非常に大きく(> 1M行)、バルクインデクサーに30分以上かかる場合があることです。

'fork'に設定すると、GORMを介して変更が加えられると、luceneがクラッシュします。これは、luceneがスレッドセーフではなく、フォークされたバルクインデックススレッドの実行中にGORMトランザクションがインデックスを更新しようとするためです。

trueに設定すると、アプリケーションは30分以上の初期化を終了します。

4

2 に答える 2

0

別のソースからのデータを変更していない場合、特にmirrorChangesをtrueに設定している場合は、bulkIndexOnStartupをtrueに設定する必要はありません。これは、アプリケーションでの処理方法とほぼ同じです。特定のクラスに対して、フォークされたインデクサーを呼び出すコントローラーアクションがあるため、必要な場合、たとえば、何らかの理由でデータベースを直接更新する必要がある場合に、オンデマンドで呼び出すことができます。次に、クラスのセット全体ではなく、特定のクラスのインデクサーを呼び出します。このように、呼び出す必要がある場合は、それほど時間はかかりません。

于 2011-01-18T23:32:52.173 に答える
0

変更をミラーリングしている場合、bulkIndexOnStartup は必要ありません。

データセットがはるかに小さいため、実際には、メンテナンス タスクとしてリリースを行うときにオプションとして「fork」を設定して bulkIndexOnStartup を実行します。

于 2010-11-24T21:21:07.897 に答える