1

同じテーブルで動作する 2 つのアプリケーションからログインし、2 つのプログラムから 2 つの操作を実行しているため、バックグラウンド SQL クエリが実行されます。また、1 つの操作が原因で、もう 1 つの操作が停止したり、実行が非常に遅くなったりします。これら 2 つのクエリが非常に長い間一緒に保持されていることがわかりました。

  1. テーブルから count(*) を選択 ....
  2. テーブルに挿入......

また、実行時にクエリによって取得されたロックを表示する方法や、どのクエリが競合している可能性があるかを確認する方法について教えてください。

4

1 に答える 1

0

選択はロックを要求しないため、ロックの問題はないと思います。

あなたが経験しているかもしれないことは、選択が変更前のイメージ、つまり挿入前の値に頼らなければならないということです (挿入と選択が同じテーブルを使用すると仮定して)。変更前のイメージはロールバック セグメントに格納され、それらへのアクセスには多少のコストがかかります。

それでも、データがいっぱいになる過程にあるテーブルの行数を照会することはあまり意味がありません。結果は何を教えてくれるでしょうか?1マイクロ秒後には間違っています。これは、すべての背後にあるロジックを再考する必要があることを示唆しています。

于 2013-05-01T13:24:10.427 に答える