ローカル derby db を使用してリモートでデプロイされた Java アプリの 1 つが、テーブルでのトランザクションの完了を待機するためにロックアップすることがあります。アプリは 24 時間ごとにこの derby データベースをジャガーノート Oracle サーバーと同期します。つまり、コンテンツを配信した後、すべてのテーブルをクリアしてから完全に再作成します。
ボンネットを開けると、テーブルの 1 つの .dat ファイルが 100Mb にまで膨れ上がっていることがわかりました。ユーザーは通常、物事が同期するときに周りにいないため、この時点に到達するのにどれくらいの時間がかかるか正確にはわかりません. 完全に停止したように見えるまで、緩やかな減速は報告されませんでした。また、自動コミットはオフになっていますが、コードはかなりタイトに見えるため、現在、論理的にはわかりません。
グーグルで調べた後、古いトランザクションがどういうわけか忘れられ、コミットもロールバックもされなかった可能性があると思います-テーブルをクリアして再入力する将来の同期では、同期ごとに元のサイズでファイルが大きくなります。その古い点。
これを確認する方法はありますか、または完全に間違った方向に考えていますか? 古いトランザクションや長時間実行されているトランザクションをリストすることはできますか? 見つかった場合、どうすればそれらをクリアできますか? また、それらをクリアするとディスク容量が再利用されますか?