100000の行を含むDBで数百の行を選択し、後でそれらの行を更新しようとしています。
問題は、updateがそれらの行を「読み取り」としてマークするだけなので、この目的でDBに2回アクセスしたくないことです。
単純なjdbcライブラリを使用してJavaでこれを行う方法はありますか?(うまくいけば、ストアドプロシージャを使用せずに)
更新:わかりました、ここにいくつかの説明があります。
異なるサーバーで実行されている同じアプリケーションのインスタンスがいくつかあります。それらはすべて、creation_date列に従ってソートされた数百の「UNREAD」行を選択し、その中のblobデータを読み取り、ファイルに書き込み、そのファイルをサーバーにftpで転送する必要があります。(私は先史時代を知っていますが、要件は要件です)
読み取りと更新の部分は、各インスタンスが異なるデータセットを取得することを保証するためのものです。(順番に、オッズや偶数のようなトリックは機能しません:/)
更新するデータを選択します。データはネットワークを介して転送され(待機して待機)、「READ」として更新されます。次に、読み取りのためにロックを解除します。この全体に時間がかかりすぎます。読み取りと更新を同時に行うことで、ロック時間を短縮して(更新にselectを使用してから実際の更新まで)、複数のインスタンスを使用すると1秒あたりの読み取り行が増えるようにしたいと思います。
まだアイデアがありますか?