web-dev-qa-db-fra.com

Risque de verrouillage de la page désactivée

Dans une autre question, un utilisateur demande comment forcer le verrouillage du niveau de ligne. La réponse qu'il reçoit leur dit comment forcer le verrouillage de niveau de ligne en modifiant la table et les index. L'utilisateur qui a répondu à la question est également mentionné qu'il peut y avoir un effet secondaire de prévention de la réorganisation des index.

Ce que je veux savoir, c'est si quelqu'un pouvait expliquer cet effet secondaire, car notre inquiétude est qu'un tableau est inséré dans et supprimé de beaucoup, pourrait devenir lentement au fil du temps si l'effet secondaire de forcer le verrouillage de niveau de ligne fait ce que nous pensons Cela fait.

POST ORGINAL:

Comment forcer l'utilisation des serrures de ligne?

Merci d'avance

3
Matthew Morris

Dans le lien référencé Comment forcer l'utilisation des serrures de ligne? Paul White démontre que la réorganisation de l'indice ne peut pas se produire si cet index a des verrouillages de page désactivés.

Vous pouvez bien sûr réinitialiser la page de remanier avant de faire une réorganisation, puis de l'éteindre ensuite:

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

Pour ce que cela vaut, en réponse à cette question https://stackoverflow.com/questions/3114826/is-it-possible-à-force-row-level-locking-in-sql-server = Remus Rusanu donne la déclaration sur le verrouillage de la page désactivé sur un index. Mais il commente également: "Je ne vais jamais éteindre sur ma base de données. La solution consiste toujours à concevoir correctement le schéma et les requêtes afin que les numéros (qui sont les coupables d'escalade) ne se produisent pas pour commencer."

Cela ne signifie pas qu'il est faux de désactiver le verrouillage de la page, mais cela souligne qu'il existe d'autres moyens de travailler à travers le problème.

Vous pourriez également être intéressé par la lecture sur l'escalade de verrouillage (SQL Server 2008 R2 est le document le plus récent que je puisse trouver) à l'adresse suivante: http://technet.microsoft.com/en-us/library/ms184286 (v = SQL.105) .aspx

4
RLF