How Online Index Operations Work

W tym temacie zdefiniowano struktur, które istnieją podczas operacji online indeksu i pokazuje czynności skojarzonych z tymi struktur.

Struktury indeks online

Aby umożliwić działanie równoczesnych użytkowników podczas operacji (DDL) języka definicja danych indeksu, używane są następujące konstrukcje podczas operacji online indeksu: urządzenie źródłowe i gotowe indeksy, wartości miejsce docelowe, a dla indeksów klastrowanych przejściowy mapowania indeksu.

  • urządzenie źródłowe i gotowe indeksy

    urządzenie źródłowe jest oryginalnej tabela lub danych indeks klastrowany.Gotowe indeksy są wszelkie ponownego zbudowania indeksów nie klastrowanych w związane ze strukturą urządzenie źródłowe.Na przykład jeśli operacja online indeksu jest przebudowywanie indeksu klastrowanego, który ma cztery skojarzone ponownego zbudowania indeksów nie klastrowanych, urządzenie źródłowe jest istniejący indeks klastrowany i gotowe indeksy są ponownego zbudowania indeksów nie klastrowanych.

    Gotowe indeksy są dostępne dla użytkowników równocześnie, wybierz opcję, wstawiania, aktualizacji i operacji usuwania.Dotyczy to aktualizacji niejawna przez wyzwalacze i ich ograniczenia integralność referencyjnej i wstawia zbiorczej (obsługiwane, ale nie zalecane).Wszystkie gotowe indeksy są dostępne do obsługi zapytań i wyszukiwania.Oznacza to, ich może być wybrany przez optymalizator kwerendy i, jeśli to konieczne, określone w wskazówki indeksu.

  • Element zwracane typy

    miejsce docelowe lub cele jest nowy indeks (lub sterty) lub zestaw nowe indeksy, które jest tworzenia ani ponownie zbudowana.Użytkownik wstawiania, aktualizacji i operacji usuwania do urządzenie źródłowe, które są stosowane przez SQL Server Database Engine Aby miejsce docelowe podczas operacji indeksu. Na przykład, jeśli operacja online indeksu jest przebudowywanie indeksu klastrowanego, obiekt miejsce docelowe jest indeks klastrowany zostanie odbudowany; Database Engine nie odbudować ponownego zbudowania indeksów nie klastrowanych, gdy indeks klastrowany jest ponownie.

    miejsce docelowe Indeksu nie będzie przeszukiwana podczas przetwarzania instrukcji SELECT, dopóki operacja indeksu jest zatwierdzona.Wewnętrznie indeks jest oznaczony jako tylko do zapisu.

  • Mapowanie tymczasowy indeks

    Operacji online indeksu, tworzenie, usuwanie lub odbudowanie indeks klastrowany wymagają indeksu tymczasowe mapowania.Ten tymczasowy indeks jest używany przez jednoczesnych transakcji do ustalenia, które rekordy do usunięcia w nowe indeksy, które są konstruowany wierszy w tabela podstawowej są aktualizację lub usunięcie.Indeks nieklastrowany ten jest tworzony w tym samym kroku jako nowy indeks klastrowany (lub stosu) i nie wymaga operacji oddzielne sortowania.Jednoczesnych transakcji także utrzymać indeksu tymczasowe mapowania wszystkich ich wstawiania, aktualizacji i operacji usuwania.

Działania indeksu online

Podczas operacji proste indeksu online, takich jak tworzenie indeks klastrowany w nieindeksowanych tabela (sterty) źródłowe i docelowe przechodzą przez trzy etapy: Przygotowanie, kompilacji i final.

Na poniższej ilustracji przedstawiono proces tworzenia online początkowego indeks klastrowany.urządzenie źródłowe Obiektu sterty, ma nie inne indeksy.urządzenie źródłowe Docelowej struktury działania są wyświetlane dla każdej fazy; i wybierz równoczesnych użytkowników, wstawiania, aktualizacji i operacji usuwania są także wyświetlane.Przygotowanie, kompilacji i końcowe faz wskazano wraz z trybów blokada używane w każdej z faz.

Activities performed during online index operation

Działania struktura urządzenie źródłowe

Poniższa tabela zawiera listę działań dotyczących struktur urządzenie źródłowe podczas każdej fazy działania indeksu i odpowiadające im strategię blokowania.

Fazy

urządzenie źródłowe aktywności

Blokady urządzenie źródłowe

Przygotowanie

Bardzo krótki fazy

Przygotowanie systemu metadane do utworzenia nowej struktury pusty indeks.

Migawkę tabela jest zdefiniowana.Oznacza to przechowywanie wersji wiersza jest używany do zapewnienia spójności odczytać poziom transakcji.Aby uzyskać więcej informacji zobaczUnderstanding Row Versioning-Based Isolation Levels.

Operacje zapisu równoczesnych użytkowników w źródle są blokowane przez bardzo krótki okres.

Nie równoczesne operacje DDL są dozwolone z wyjątkiem tworzenia wielu ponownego zbudowania indeksów nie klastrowanych.

S (udostępniany) w tabela *

WW (opcje udostępnione)

INDEX_BUILD_INTERNAL_RESOURCE **

Kompiluj

Główne fazy

Dane są skanowane, posortowane, scalone i wstawiony obiekt miejsce docelowe operacje zbiorcze obciążenia.

Wybierz równoczesnych użytkowników, wstawiania, aktualizacji i operacji usuwania są stosowane do gotowe indeksy i wszelkie nowe indeksy konstruowany.

WW (opcje udostępnione)

INDEX_BUILD_INTERNAL_RESOURCE **

Końcowe

Bardzo krótki fazy

Wszystkie transakcje aktualizacji nieprzydzielonych należy zakończyć przed uruchomieniem tej fazy.W zależności od nabytego blokada wszystkich nowych użytkowników odczytu lub zapisu, transakcje są zablokowane przez bardzo krótki okres, aż do zakończenia tej fazy.

Metadane systemu zostanie zaktualizowany tak, aby zastąpić urządzenie źródłowe miejsce docelowe.

urządzenie źródłowe zostanie usunięte, jeżeli jest to wymagane.Na przykład po przebudowywanie lub usunięcie indeks klastrowany.

INDEX_BUILD_INTERNAL_RESOURCE **

S (udostępniany) w tabela tworzenia nieklastrowany index.*

Dropped.* jest SCH-M (schemat modyfikacji) w przypadku dowolnego urządzenie źródłowe struktury (indeks lub tabela)

* Operacji indeksu będzie czekał na wszelkie transakcje aktualizacji niezakończone do wykonania przed Pobieranie blokada S lub SCH M blokadę w tabela.

** zasób blokada INDEX_BUILD_INTERNAL_RESOURCE uniemożliwia wykonanie równoczesne operacje DDL urządzenie źródłowe i struktury już w trakcie operacji indeksu.Na przykład tej blokada uniemożliwia jednoczesne odbudowywania dwa indeksy dla tej samej tabela.Blokada tego zasób jest skojarzony z blokady SCH-M, nie zapobiega instrukcji manipulacji na danych.

W poprzedniej tabela zawiera pojedynczy blokada współużytkowane (S) nabyte w fazie kompilacji operację indeksu online, która wiąże się z jednym indeksem.Gdy indeksy klastrowane i nieklastrowany są wbudowane albo ponownie zbudowana przy użyciu operacji jeden indeks online (na przykład podczas tworzenia indeks klastrowany początkowego dla tabela, która zawiera co najmniej jeden indeks nieklastrowany) dwóch krótkoterminowe blokad udostępnione (S) są nabywane w fazie kompilacji następują długoterminowej blokady IS.Jeden S jest blokada najpierw do utworzenia indeks klastrowany i tworzenie indeks klastrowany zostanie zakończone, drugi krótkoterminowe blokada S został nabyty tworzenia ponownego zbudowania indeksów nie klastrowanych.Po utworzeniu ponownego zbudowania indeksów nie klastrowanych S blokada jest obniżyć blokada IS do ostatniej fazy operacji online indeksu.

miejsce docelowe działania struktury

Poniższa tabela zawiera listę działań dotyczących struktury miejsce docelowe podczas każdej fazy działania indeksu i odpowiadające im strategię blokowania.

Fazy

miejsce docelowe działania

Blokady miejsce docelowe

Przygotowanie

Jest tworzony nowy indeks i zestaw do tylko do zapisu.

WW (opcje udostępnione)

Kompiluj

Jest wstawiane dane ze urządzenie źródłowe.

Modyfikacje wprowadzane przez użytkownika (wstawia, aktualizacje, usuwa) stosowany do urządzenie źródłowe są stosowane.

To działanie jest przezroczyste dla użytkownika.

WW (opcje udostępnione)

Końcowe

Metadane indeksu są aktualizowane.

Indeks jest ustawiony na stan odczytu/zapisu.

S (wspólne)

lub

SCH-M (modyfikacji schematu)

W instrukcji SELECT, wystawiony przez użytkownika, aż do zakończenia operacji indeksu nie można uzyskać dostępu do miejsce docelowe.

Po zakończeniu sporządzania i końcowa faza plany kwerendy i aktualizacji, które są przechowywane pamięć podręczna procedury są unieważniane.Kolejne kwerendy będą używać nowego indeksu.

Okres istnienia kursor zadeklarowane w tabela, która uczestniczy w przypadku operacji online indeksu jest ograniczona faz online indeksu.Kursory aktualizacji są unieważniane na każdym etapie.Kursory tylko do odczytu są unieważniane dopiero po ostatniej fazy.