2009-12-09 6 views
0

SQL Server 2005: 240 millions de lignes de table. Exigences de colonne passant de NOT NULL à NULL.Impact de la colonne ALTERING dans une table énorme NOT NULL à NULL

Généralement, il est mal (et souvent impossible) d'utiliser les instructions ALTER lorsque vous manipulez des tables de cette taille, cependant, en essayant d'éviter de reconstruire la table, si possible.

Instruction ALTER testée sur une table dev contenant 20m lignes et l'instruction exécutée avec succès en < 1 seconde. Question: Il semble que cela devrait fonctionner contre l'énorme table de production ... mais quelqu'un peut-il indiquer les risques ou l'impact basé sur l'expérience (autre que l'évidence)?

Merci beaucoup.

+0

Merci à tous pour vos commentaires .... – user24531

Répondre

1

Je n'ai jamais eu de problème à le faire moi-même sur de grandes tables.

Si vous changiez le type de données ou raccourcissiez la taille d'une colonne par exemple, cela impliquerait plus de travail. Mais pour passer de NOT NULL à NULL, il ne devrait pas trop taxer une tâche.

Je voudrais cependant, dans une approche standard, programmer la mise à jour pendant une période de silence.

1

Ne devrait pas être un problème allant de NOT NULL à NULL. Je l'ai déjà fait et je n'ai pas eu de problème avec ça.

La seule chose que je peux trouver avec ce qui pourrait être un problème est d'obtenir le verrou pour la table entière.

2

Une modification de NOT NULL à NULL est correcte car les données existantes n'ont pas besoin d'être vérifiées/modifiées. L'autre direction aurait cependant besoin de vérifier toutes les données existantes; donc cela pourrait être problématique.

Je vous suggère de faire attention à la possibilité que les requêtes existantes (écrites lorsque la colonne était encore NOT NULL) ne seront pas 'cassées' en raison de la possibilité de valeurs NULL. Le hic, c'est qu'il peut être difficile de confirmer que la logique est toujours correcte dans tous les cas, car il est peu probable que vous receviez des erreurs évidentes.

Faites très attention aux fonctions d'agrégation.