Dezactivarea indexurilor

Dezactivarea indexurilor împiedică accesul utilizatorilor la indexuri atunci când indexurile grupate sunt utilizate pentru datele din tabelul de bază. Definiția indexului rămâne în metadate, iar statisticile privind indexul sunt stocate pe indici nonclusi. Dezactivarea indexurilor neclasificate sau a indexurilor grupate într-o vizualizare elimină fizic datele index. Dezactivarea unui index tabelat în grupuri împiedică accesul la date; datele rămân în tabel, dar acestea nu sunt disponibile pentru operațiile DML până când indexul nu este șters sau refăcut. Pentru a reconstrui și a activa indexul dezactivat, utilizați instrucțiunea ALTER INDEX REBUILD sau instruciunea CREATE INDEX WITH DROP_EXISTING.







Unul sau mai mulți indexuri pot fi dezactivate în următoarele situații:

SQL Server Database Engine dezactivează automat indexul în timpul actualizării aplicației SQL Server.

Indicele este dezactivat manual utilizând instrucțiunea ALTER INDEX.

Când faceți upgrade la o versiune nouă sau în timpul unui upgrade, utilizând un service pack SQL Server, motorul de bază de date identifică și dezactivează automat indexul, inclusiv indexurile de vizualizare, dacă definiția indexului sau a vizualizării conține una dintre următoarele:

O expresie pentru care motorul bazei de date nu poate garanta integritatea datelor index.

De exemplu, să presupunem că indexul folosește o funcție de sistem și în timpul actualizării, funcția a fost modificată astfel încât să revină la un alt rezultat. Motorul bazei de date va dezactiva indexul în timpul procesului de actualizare, deoarece indexul poate conține date care nu vor fi valabile după actualizare.







Opțiunile de sortare care se modifică în timpul procesului de actualizare sunt astfel încât indexul nu mai este sortat corect.

Dacă indexul este dezactivat în timpul actualizării, apare un mesaj care conține numele indexului și numele tuturor constrângerilor conexe, astfel încât să le puteți reconstrui după finalizarea upgrade-ului. Reconstruirea indexului și includerea tuturor restricțiilor va corecta datele care au devenit nevalabile în timpul procesului de actualizare.

O constrângere CHECK poate fi dezactivată dacă definiția acesteia conține o expresie pentru care Database Engine nu mai poate garanta integritatea datelor. Puteți activa restricția utilizând instrucțiunea ALTER TABLE CHECK.

Cu instrucțiunea ALTER INDEX DISABLE, puteți dezactiva manual indicele în orice moment.

Dezactivarea manuală a indexului poate fi utilă în următoarele cazuri:

Fixarea erorilor I / O pe disc (eroare 823 sau 824) pe pagina index și apoi reconstruirea indexului.

Înlăturarea temporară a indexului pentru depanare.

Refaceți indicii care nu sunt grupați.

Dacă indexul noncluster este activat, operația de reconstruire necesită un spațiu temporar pe disc suficient pentru a stoca indexul nou și vechi. Dacă dezactivați și reconstruiți indecșii nonclusteri într-o tranzacție separată, spațiul de pe disc eliberat atunci când indicii sunt dezactivați poate fi utilizat pentru reconstrucția ulterioară sau pentru orice altă operație. Spațiu suplimentar de disc nu este necesar, cu excepția spațiului temporar de pe disc pentru sortare; Aceasta este de obicei 20% din mărimea indicelui.

Dacă spațiul de pe disc este limitat, poate fi util să dezactivați indexul care nu este clustered înainte de reconstruire. De exemplu, există o procedură stocată care reconstruiește toți indecșii nonclusteri în unul sau mai multe tabele. Dezactivarea acestor indexuri într-o altă tranzacție, în afară de operația de reconstruire, înainte de reconstrucție, reduce semnificativ spațiul temporar necesar pentru reconstrucție.







Articole similare

Trimiteți-le prietenilor: