Udostępnij za pośrednictwem


DBCC SHOWCONTIG (języka Transact-SQL)

Wyświetla informacje o fragmentacji dla danych i indeksów z określonej tabela lub widoku.

Important noteImportant Note:

This feature will be removed in the next version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Użycie sys.dm_db_index_physical_stats zamiast niego.

Topic link iconKonwencje składni języka Transact-SQL

DBCC SHOWCONTIG 
[ ( 
    { table_name | table_id | view_name | view_id } 
    [ , index_name | index_id ] 
) ] 
    [ WITH 
        { 
         [ , [ ALL_INDEXES ] ] 
         [ , [ TABLERESULTS ] ] 
         [ , [ FAST ] ]
         [ , [ ALL_LEVELS ] ] 
         [ NO_INFOMSGS ]
         }
    ]

Argumenty

  • table_name | table_id | view_name | view_id
    Jest to tabela lub widok, aby sprawdzić, czy informacje fragmentacji.Jeśli nie zostanie określony, wszystkie tabele i widoki indeksowane w bieżącej bazie danych są sprawdzane.Aby uzyskać w tabela lub wyświetlanie IDENTYFIKATORA, należy użyć OBJECT_ID funkcja.

  • index_name | index_id
    Jest indeksem, aby sprawdzić, czy informacje fragmentacji.Jeśli nie zostanie określony, instrukcja przetwarza podstawy indeksu dla określonej tabela lub widoku.Aby uzyskać identyfikator indeksu, należy użyć sys.Indexes Służy do wyświetlania katalogu.

  • Z
    Określa opcje dla wybranego typu informacji, które są zwracane przez instrukcję DBCC.

  • SZYBKIE
    Określa, czy szybkie skanowanie informacji minimalne indeksu i danych wyjściowych.Szybkie skanowanie nie odczytuje typu liść lub dane strony poziom indeksu.

  • ALL_INDEXES
    Wyświetla wyniki dla wszystkich indeksów dla określonych tabel i widoków, nawet jeśli określono określonego indeksu.

  • TABLERESULTS
    Wyświetla wyniki w postaci zestawu zestaw wierszy z dodatkowymi informacjami.

  • ALL_LEVELS
    Utrzymać zgodność z poprzednimi wersjami.Nawet wtedy, gdy określono ALL_LEVELS, przetwarzane są tylko na poziomie poziom liścia indeksu lub poziom danych tabela.

  • NO_INFOMSGS
    Pomija wszystkie komunikaty informacyjne, których poziomy ważności, od 0 do 10.

Zestawy wyników

W poniższej tabela przedstawiono informacje zawarte zestaw wyników.

Statystyki

Description

Zeskanowane strony

Liczba stron w tabela lub indeksu.

Zakresy skanowania

Liczba zakresów w tabela lub indeksu.

Przełączniki fragment

Liczba określająca, ile razy instrukcji DBCC przeniesione z jednego fragment na inny, podczas gdy instrukcja przesunięta strony tabela lub indeks.

Średni czas Stron na fragment

Liczba stron na fragment w łańcuchu strona.

Skanowanie gęstość [Licznik najważniejsze: Rzeczywista liczba]

Jest w procentach.Jest on stosunek Najlepsze Count to Rzeczywista liczba.Wartość ta wynosi 100, jeśli wszystkie ustawienia są ciągłe, jeśli ta wartość jest mniejsza niż 100, istnieje kilka fragmentacji.

Najlepsze Count jest idealnie nadaje się liczbę zmian fragment, jeśli wszystkie elementy ciągły obszar jest połączony.Rzeczywista liczba jest rzeczywista liczba zmian fragment.

Fragmentacja logicznym skanera

Procent zwrócił skanowanie stron typu liść indeksu stron poza kolejnością.Liczba ta nie dotyczy hałd.strona poza kolejnością jest stroną, dla którego następnej strona fizyczne, przydzielonych do indeksu nie jest wskazywany przez pag następnej stronae wskaźnik na bieżącej stronie typu liść.

Fragmentacja skanowania fragment

Procent poza kolejnością zakresów w skanowania stron typu liść indeksu.Liczba ta nie dotyczy hałd.W zakresie poza kolejnością to dla których fragment zawierający bieżącą strona do indeksu nie jest fizycznie następnego fragment po jakim zawiera poprzedniej strona indeksu.

NoteNote:
Numer ten jest pozbawione sensu, gdy indeksu obejmującego wiele plików.

Średni czas Bajty wolne strona

Średnia liczba bajtów wolnych zeskanowane strony.Im większa liczba, mniej pełnej strony są.Niższe numery są lepiej, jeśli indeks nie będzie miał wiele wstawia losowe.Ten numer ma także wpływ rozmiar wiersza; rozmiar obszernego wiersza może spowodować, że większą liczbę.

Średni czas Strona gęstość (pełna)

Średnia gęstość strona, jako wartość procentowa.Wartość ta uwzględnia konta rozmiar wiersza.Dlatego wartość jest dokładniejsze określenie stopień wypełnienia znajdują się na stronach.Im większa jest wartość procentowa, tym lepiej.

Kiedy table_id i FAST podano SHOWCONTIG DBCC zwraca zestaw wyników w następujących kolumnach.

  • Zeskanowane strony

  • Extent Switches

  • Scan Density [Best Count:Actual Count]

  • Fragmentacja skanowania fragment

  • Fragmentacja logicznym skanera

Po określeniu TABLERESULTS SHOWCONTIG DBCC zwraca następujące kolumny i również dziewięciu kolumny opisane w powyższej tabela.

Statystyki

Description

Nazwa obiektu

Nazwa tabela lub widoku przetwarzane.

Identyfikator obiektu

Identyfikator nazwy obiektu.

IndexName

Nazwa indeksu, który jest przetwarzane.IS NULL dla sterty.

IndexId

Identyfikator indeksu.Czy 0 dla sterty.

Level

Poziom indeksu.Poziom 0 jest poziom typu liść lub dane indeksu.

Poziom jest równy 0 dla sterty.

Strony

Liczba stron, które wchodzą w skład których poziom indeksu lub całych sterty.

Wiersze

Liczba danych lub indeksu rekordów na którym poziom indeksu.Na stosie ta wartość jest liczba rekordów danych w całości sterty.

Na stosie liczby rekordów zwracanych z tej funkcja mogą być niezgodne liczbę wierszy zwracanych przez uruchomienie Count(*) z SELECT wobec sterty.Dzieje się tak, ponieważ wiersz może zawierać wiele rekordów.Na przykład w niektórych sytuacjach, sterty pojedynczy wiersz może mieć rekord przesyłania dalej i przesyłanych dalej rekordu z powodu operacji aktualizacji.Ponadto większości dużych LOB wiersze są dzielone na wiele rekordów w magazynie LOB_DATA.

MinimumRecordSize

Rozmiar minimalny rekordu w tym poziom indeksu lub całych sterty.

MaximumRecordSize

Rozmiar rekordów w tym poziom indeksu lub całych sterty.

AverageRecordSize

Średni rozmiar rekordu w tym poziom indeksu lub całych sterty.

ForwardedRecords

Liczba przekazane rekordów w tym poziom indeksu lub całych sterty.

Zakresy

Liczba zakresów w tym poziom indeksu lub całych sterty.

ExtentSwitches

Liczba określająca, ile razy instrukcji DBCC przeniesione z jednego fragment na inny, podczas gdy instrukcja przesunięta strony tabela lub indeks.

AverageFreeBytes

Średnia liczba bajtów wolnych zeskanowane strony.Im większa liczba, mniej pełnej strony są.Niższe numery są lepiej, jeśli indeks nie będzie miał wiele wstawia losowe.Ten numer ma także wpływ rozmiar wiersza; rozmiar obszernego wiersza może spowodować, że większą liczbę.

AveragePageDensity

Średnia gęstość strona, jako wartość procentowa.Wartość ta uwzględnia konta rozmiar wiersza.Dlatego wartość jest dokładniejsze określenie stopień wypełnienia znajdują się na stronach.Im większa jest wartość procentowa, tym lepiej.

ScanDensity

Jest w procentach.Jest on stosunek BestCount to ActualCount.Wartość ta wynosi 100, jeśli wszystkie ustawienia są ciągłe, jeśli ta wartość jest mniejsza niż 100, istnieje kilka fragmentacji.

BestCount

Jest liczbą idealnie nadaje się fragment zmian, jeśli wszystkie elementy ciągły obszar jest połączony.

ActualCount

To rzeczywista liczba zmiany fragment.

LogicalFragmentation

Procent zwrócił skanowanie stron typu liść indeksu stron poza kolejnością.Liczba ta nie dotyczy hałd.strona poza kolejnością jest stroną, dla którego następnej strona fizyczne, przydzielonych do indeksu nie jest wskazywany przez pag następnej stronae wskaźnik na bieżącej stronie typu liść.

ExtentFragmentation

Procent poza kolejnością zakresów w skanowania stron typu liść indeksu.Liczba ta nie dotyczy hałd.W zakresie poza kolejnością to dla których fragment zawierający bieżącą strona do indeksu nie jest fizycznie następnego fragment po jakim zawiera poprzedniej strona indeksu.

NoteNote:
Numer ten jest pozbawione sensu, gdy indeksu obejmującego wiele plików.

Po określeniu TABLERESULTS WITH a FAST zestaw wyników jest taka sama, jak przy WITH TABLERESULTS jest określony, z wyjątkiem w następujących kolumnach będą mieć wartości null:

Wiersze

Zakresy

MinimumRecordSize

AverageFreeBytes

MaximumRecordSize

AveragePageDensity

AverageRecordSize

ExtentFragmentation

ForwardedRecords

 

Remarks

Instrukcja SHOWCONTIG DBCC który przechodzi i łańcuch strona na poziomie typu poziom liścia na określonym podczas indeksowania index_id jest określony. Jeśli tylko table_id określono lub, jeśli index_id 0, strony danych z określonej tabela zostaną zeskanowane. Operacja wymaga tylko wspólne opcje (IS) blokada tabela.Ten sposób wszystkie aktualizacje i wstawia może być wykonana, oprócz tych, które wymagają wyłącznej (blokada tabela X).Pozwala to na zależnościami między szybkość działania i nie zmniejszania w współbieżność przed liczba zwracanych danych statystycznych.Jeśli polecenie jest używane tylko do określenia fragmentacji, zaleca się jednak użyć opcji WITH FAST celu uzyskania optymalnej wydajności.Szybkie skanowanie nie odczytuje typu liść lub dane strony poziom indeksu.Opcja WITH FAST nie ma zastosowania do stosu.

Algorytm obliczania fragmentacji jest bardziej precyzyjne w SQL Server 2008 niż w SQL Server 2000. W wyniku wartości fragmentacji pojawi się wyższe.Na przykład w SQL Server 2000, tabela nie jest uważany za fragmentacji, jeśli ma ona strona 11 i strona 13 w tym samym zakresie, ale nie strona 12. Jednak aby uzyskać dostęp do tych dwóch stron wymaga dwóch fizycznych operacji We/Wy, co to jest liczony jako fragmentacji w SQL Server 2008.

Ograniczenia

DBCC SHOWCONTIG nie są wyświetlane dane z ntext, text, a image typy danych. Dzieje się tak, ponieważ tekst indeksuje indeksu (identyfikator 255 w SQL Server 2000) Magazyn danych tekstowych i graficznych nie jest już istnieje. Aby uzyskać więcej informacji na temat indeksu IDENTYFIKATORA 255 zobacz sys.sysindexes (Transact-SQL).

DBCC SHOWCONTIG nie obsługuje także kilka nowych funkcji.Na przykład:

  • Jeśli określona tabela lub indeks jest już podzielony na partycje, SHOWCONTIG DBCC będą wyświetlane tylko na pierwszej partycji określonej tabeli lub indeks.

  • DBCC SHOWCONTIG nie jest wyświetlany wiersz przepełnienie magazynu informacji i inne nowe typy danych poza wiersz, takich jak nvarchar(max), varchar(max), varbinary(max), a xml.

  • Przestrzennej indeksy nie są obsługiwane przez SHOWCONTIG DBCC.

Wszystkie nowe funkcje są w pełni obsługiwane przez sys.dm_db_index_physical_stats (Transact-SQL) dynamiczny widok zarządzania.

Fragmentacja tabela

DBCC SHOWCONTIG Określa, czy w tabela jest bardzo pofragmentowany.Fragmentacji tabela występuje w procesie modyfikacji danych (instrukcje INSERT, UPDATE i DELETE) przeciwko w tabela.Ponieważ te modyfikacje nie zazwyczaj umieszczone są równie wierszy tabela, stopnia ukończenia każdej strona może się zmieniać w czasie.W przypadku kwerend skanowania fragmentu lub całej tabela takie fragmentacji tabela może spowodować, że odczytów dodatkową strona.To przeszkadza równoległych skanowania danych.

Gdy indeks jest bardzo pofragmentowany, zmniejszenie fragmentacji dostępne są następujące opcje:

  • Usuwanie i ponowne utworzenie indeks klastrowany.

    Ponowne tworzenie indeks klastrowany Reorganizuje dane i powoduje, że strony pełnych danych.Poziom stopnia ukończenia można konfigurować za pomocą opcji FILLFACTOR w CREATE INDEX.Niedogodności tej metoda są, czy indeks jest w trybie offline podczas listy rozwijanej lub ponownie utworzyć cykl, a także czy operacja jest niepodzielny.Jeśli do tworzenia indeksu zostanie przerwana, indeks nie jest ponownie tworzony.

  • Zmienić kolejność strony poziom liść indeksu w celu logicznego.

    Za pomocą instrukcji ALTER INDEX…REORGANIZE kolejności stron poziom liść indeksu w celu logicznego.Ponieważ ta operacja jest operacją, online, indeks jest dostępna, gdy działa w instrukcja.Operacja jest również zmiennego bez utraty Praca wykonana.Wadą tej metody jest, że metoda nie jak dobre zadanie z reorganizowanie danych jako upuszczania indeks klastrowany lub odtworzyć operacji.

  • Odbudowanie indeksu.

    Za pomocą instrukcji ALTER indeks ODBUDOWYWANIA odbudowanie indeksu.Aby uzyskać więcej informacji zobaczALTER INDEX (języka Transact-SQL).

The Avg. Liczba bajtów wolnego miejsca strona a Średni czas Strona gęstość (pełna) statystyk zestaw wyników wskazują stopnia ukończenia stron indeksu.The Avg. Bajty wolne strona numer powinien być niski i Średni czas Numer strona gęstość (pełna) powinna być wysoka indeksu, który nie będzie miał wiele losowych wstawia.Usunięcie i ponowne tworzenie indeksu z FILLFACTOR określono opcję może poprawić dane statystyczne.Ponadto ALTER indeks z REORGANIZACJA będzie compact indeksu, biorąc pod uwagę jego FILLFACTOR i poprawi statystyki.

Uwaga

Wstawia indeks, który ma wiele losowych i bardzo pełne strona będą miały zwiększenie liczby podziałów strona.Powoduje to, że więcej fragmentacji.

Poziom rozdrobnienia indeks może zostać określony w następujący sposób:

  • Przez porównanie wartości Przełączniki fragment and Zakresy skanowania.

    Wartość Przełączniki fragment powinna być możliwie najbardziej tym Zakresy skanowania.Współczynnik ten jest obliczany jako Skanowanie gęstość wartość.Wartość ta powinna być możliwie najwyższa i można poprawić przez zmniejszenie fragmentacji indeksu.

    Uwaga

    Ta metoda nie działa, jeśli indeksu obejmującego wiele plików.

  • Zrozumienie Fragmentacja logicznym skanera and Fragmentacja skanowania fragment wartości.

    Fragmentacja logicznym skanera i w mniejszym fragment Fragmentacja skanowania fragment wartości są najważniejsze wskaźniki poziomie fragmentacji tabela.Obie te wartości powinny być jak zbliżona do zera, mimo że wartość z zakresu od 0 do 10 procent mogą być akceptowane.

    Uwaga

    The fragment Scan Fragmentation value will be high if the index spans multiple files.Aby ograniczyć te wartości, należy zmniejszyć fragmentacji indeksu.

Uprawnienia

Użytkownik musi własnej tabela lub być członkiem sysadmin stała rola serwera db_owner stałe rola bazy danych lub db_ddladmin stała rola bazy danych.

Przykłady

A.Wyświetlanie informacji o fragmentacji tabela

Poniższy przykład wyświetla informacje o fragmentacji dla Employee Tabela.

B.Aby uzyskać identyfikator tabela i sys.indexes, aby uzyskać identyfikator indeksu za pomocą OBJECT_ID

W poniższym przykładzie użyto OBJECT_ID oraz sys.indexes w celu uzyskania IDENTYFIKATORA tabeli i identyfikator indeksu katalogu AK_Product_Name Indeks Production.Product Tabela w AdventureWorks Baza danych.

C.Wyświetlanie skróconej zestaw wyników dla tabela

W poniższym przykładzie są zwracane skróconej zestaw wyników dla Product Tabela w AdventureWorks Baza danych.

D.Wyświetlanie pełnego zestaw wyników dla każdego indeksu w każdej tabela w bazie danych

W poniższym przykładzie zwraca wynik pełnego tabela ustawionych dla każdego indeksu w każdej tabela w AdventureWorks Baza danych.

E.Za pomocą SHOWCONTIG DBCC i INDEXDEFRAG DBCC zdefragmentować indeksów w bazie danych

W poniższym przykładzie pokazano prosty sposób defragmentowania wszystkich indeksów w bazie danych, która jest pofragmentowany powyżej progu zadeklarowana.