Tworzenie indeksu na naprawdę zajętym stole


11

Mamy tabelę z dużą ilością za insert\selectkażdym razem (na przykład 100 maszyn wstawiających \ aktualizujących co sekundę).

Jaki jest najlepszy sposób utworzenia indeksu na stole, którego nie można zablokować nawet na sekundę?

Jeśli utworzę indeks, jestem pewien, że zablokuje on żądania i nie mogę tego zrobić.

To duży stół z 1 milionem wierszy +.

Odpowiedzi:


12

Nie ma takiej opcji jak CREATE INDEX WITH (NOLOCK)(a nawet NOLOCKprzy zapytaniu wymaga blokad, tylko mniej niż bez podpowiedzi).

Najlepsze, co zamierzasz zrobić, to WITH (ONLINE = ON)wciąż blokuje się na początku i na końcu operacji (obie odnoszą się do ponownych kompilacji planów związanych z tabelą - więcej szczegółów można znaleźć w tym blogu autorstwa Paula Randala ).

To znacznie zmniejszy wpływ budowania indeksu na twoje aplikacje, ale nie ma praktycznego sposobu na całkowite wyeliminowanie tego wpływu. Ponadto ta funkcja nie jest darmowa: wymaga wersji Enterprise.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.