私はOracleデータベースを使用していますが、私がしていることは
テーブル A の 1 つのレコードを取得します (テーブル A には列 P があり、その値は x、y、z であるとします)
値 x、y、z に従って、そのレコードをテーブル B または C または D に配置します ( P=x の場合はレコードをテーブル B に配置し、 P=y の場合はレコードをテーブル C に配置します ...)
テーブル B または C または D に挿入した A のレコードを削除します。
注: A のサイズは 2 億のようで、B は 170 C は 20 D は 10 なので、A のサイズは減少しています。他は同じです (A レコードのパラメーターが負の場合、B、C、D には挿入されません)。これらのテーブルに存在するため、テーブルから削除しただけです)、B、C、D のサイズは変更されず、A のサイズが時間とともに減少します。
問題は、最初はすべてがうまく機能していることですが、時間が経つにつれて非常に遅くなります。およそ 1 秒で 40 回の挿入と削除を行っていますが、時間的には 3 秒で 1 回の挿入と削除を処理しています。
すべてのテーブルには、対応する列にインデックスがあります。
並列実行は存在しますが、ロックはありません。
- テーブルのサイズは約 6,000 万レコードです。
テーブルのロックまたはサイズの増加がない場合、他のどのような効果が間に合うのでしょうか??
注:異なるプロセスではありません。同じプロセスで「クエリの実行」をクリックすると、非常に高速に開始されますが、非常に遅くなります。