web-dev-qa-db-ja.com

ページロックを無効にするリスク

別の質問で、ユーザーは行レベルのロックを強制する方法を尋ねます。彼が受け取った答えは、テーブルとインデックスを変更することによって行レベルのロックを強制する方法を教えています。質問に回答したユーザーは、インデックスの再編成を妨げる副作用がある可能性があることにも言及しています。

私が知りたいのは、誰かがこの副作用をさらに説明できるかどうかです。私たちが心配しているのは、多くのテーブルに挿入および削除されるテーブルは、行レベルのロックを強制する副作用が私たちの考えていることを実行する場合、時間が経つにつれて遅くなる可能性があるためですします。

元の投稿:

行ロックの使用を強制するには?

事前に感謝します

3
Matthew Morris

参照されているリンク で行ロックを強制的に使用する方法は? Paul Whiteは、インデックスでページロックが無効になっている場合、インデックスの再編成は実行できないことを示しています。

もちろん、再編成を行う前にページのロックをリセットし、後で再度オフにすることもできます。

-- Allow page locks on Index
ALTER INDEX indexname ON tablename SET (ALLOW_PAGE_LOCKS = ON);

それが価値があるものについては、この質問への応答で https://stackoverflow.com/questions/3114826/is-it-possible-to-force-row-level-locking-in- sql-server Remus Rusanuが、インデックスのページロックを無効にすることについて説明しています。しかし、彼はまた、次のように述べています。「データベースではこれをオフにしません。解決策は常に、スキーマとクエリを適切に設計して、スキャン(エスカレーションの原因)が最初から起こらないようにすることです。」

これは、ページロックを無効にするのが間違っているという意味ではありませんが、問題を解決する他の方法があることを示しています。

http://technet.Microsoft.com/en-us/libraryで、ロックエスカレーション(SQL Server 2008 R2は私が見つけた最新のドキュメントです)について読むことにも興味があるかもしれません。 /ms184286(v=sql.105).aspx

4
RLF