1

レポート目的で使用されるテーブルがあり、ユーザーが Web からレポートを実行するたびにデータが挿入されます。挿入は、レポートのパラメーターに応じて、1 行から数千行までさまざまです。挿入に使用される select ステートメントは、挿入のために最大 60 秒間実行できます。最適化されていますが、データベースが複雑なため、さらに調整することはできません。私の質問は - テーブルが挿入のためにロックされるのはいつですか? ストアド プロシージャが呼び出されたとき、select ステートメントが実行されたとき、または select ステートメントの実行が終了したときですか? 最大 50,000 行の大きなレポートを実行するときに、他のユーザーが影響を受けないように、テーブルがロックされる時間を制限したいと考えています。

元。

INSERT INTO reportTable
SELECT
   Column a,
   Column b
FROM
    Table a
    INNER JOIN
    Table b
       on b.ident = a.Bident

ありがとうございました

4

1 に答える 1

3

これを実行するだけです:

ALTER DATABASE [<dbname>] SET READ_COMMITTED_SNAPSHOT ON;

また、レポートをブロックする挿入ロックについて心配する必要はありません。行のバージョン管理に基づく分離レベルの選択 を参照してください。

于 2011-10-07T21:18:54.200 に答える