web-dev-qa-db-fra.com

Quelle est la différence entre la reconstruction d'index OFFLINE et ONLINE dans SQL Server?

Lors de la reconstruction d'un index, il existe une option pour ONLINE = OFF et ONLINE = ON. Je sais que lorsque le mode EN LIGNE est activé, il fait une copie de l'index, passe de nouvelles requêtes à son utilisation, puis reconstruit l'index d'origine, en suivant les modifications en utilisant la gestion des versions pour les deux (corrigez-moi si je me trompe).

Mais que fait SQL en mode HORS LIGNE?

48
esac

En mode ONLINE, le nouvel index est construit tandis que l'ancien index est accessible aux lectures et aux écritures. toute mise à jour de l'ancien index sera également appliquée au nouvel index. Une colonne d'antimatière est utilisée pour suivre les conflits possibles entre les mises à jour et la reconstruction (c'est-à-dire la suppression d'une ligne qui n'a pas encore été copiée). Voir Opérations d'index en ligne . Une fois le processus terminé, la table est verrouillée pendant une brève période et le nouvel index remplace l'ancien index. Si l'index contient des colonnes LOB, les opérations EN LIGNE ne sont pas prises en charge dans SQL Server 2005/2008/R2.

En mode HORS LIGNE, la table est verrouillée à l'avance pour toute lecture ou écriture, puis le nouvel index est construit à partir de l'ancien index, tout en maintenant un verrou sur la table. Aucune opération de lecture ou d'écriture n'est autorisée sur la table pendant la reconstruction de l'index. Ce n'est que lorsque l'opération est terminée que le verrou de la table est libéré et que les lectures et les écritures sont à nouveau autorisées.

Notez que dans SQL Server 2012, la restriction sur les LOB a été levée, voir Opérations d'index en ligne pour les index contenant des colonnes LOB .

63
Remus Rusanu

Les reconstructions d'index en ligne sont moins intrusives lorsqu'il s'agit de verrouiller des tables. Les reconstructions hors ligne provoquent un verrouillage important des tables, ce qui peut entraîner des problèmes de blocage importants pour les éléments qui tentent d'accéder à la base de données pendant la reconstruction.

"Les verrous de table sont appliqués pendant la durée de l'opération d'index [pendant une reconstruction hors ligne]. Une opération d'index hors ligne qui crée, reconstruit ou supprime un index cluster, spatial ou XML, ou reconstruit ou supprime un index non cluster, acquiert un schéma verrou de modification (Sch-M) sur la table. Cela empêche tous les utilisateurs d'accéder à la table sous-jacente pendant la durée de l'opération. Une opération d'index hors ligne qui crée un index non cluster acquiert un verrou partagé (S) sur la table. Cela empêche les mises à jour à la table sous-jacente mais autorise les opérations de lecture, telles que les instructions SELECT. "

http://msdn.Microsoft.com/en-us/library/ms188388 (v = sql.110) .aspx

De plus, les reconstructions d'index en ligne sont une fonctionnalité de version entreprise (ou développeur) uniquement.

6
dunos

Les principales différences sont:

1) La reconstruction d'index OFFLINE est plus rapide que la reconstruction ONLINE.

2) Espace disque supplémentaire requis lors des reconstructions d'index en ligne de SQL Server.

3) Verrous SQL Server acquis avec les reconstructions d'index en ligne SQL Server.

  • Ce verrou de modification de schéma bloque tous les autres accès simultanés à la table, mais il n'est conservé que pendant une très courte période pendant que l'ancien index est supprimé et les statistiques mises à jour.
4
Bhavin Katrodiya