Udostępnij za pośrednictwem


sp_estimate_data_compression_savings (języka Transact-SQL)

Zwraca bieżący rozmiar żądany obiekt i oszacowania rozmiaru obiektu dla stanu kompresji żądana.Kompresja może zostać oceniony całe tabele lub części tabel.Obejmuje to stert, klastrowane indeksy, zbudowania indeksów nie klastrowanych, widoki indeksowane i indeksu i tabela partycji.Obiekty mogą być skompresowane przy użyciu kompresji wiersza lub strona kompresji.Jeżeli tabela, indeks lub partycji jest już skompresowany, można użyć tej procedury, aby oszacować rozmiar tabela, indeks lub partycji, jeśli jest skompresowany ponownie.

Ostrzeżenie

Kompresja i sp_estimate_data_compression_savings są dostępne tylko w SQL Server 2008 wersje Enterprise i Developer.

Aby oszacować rozmiar obiektu, gdyby umożliwia ustawienie żądanej kompresji, ta procedura składowana próbki obiekt źródło i ładuje te dane do równoważnych tabela i utworzyć indeks w tempdb.tabela lub indeksie utworzyć w tempdb jest następnie skompresowany żądane ustawienie i kompresji szacunkowe oszczędności jest obliczana.

Do zmiany stanu kompresji tabela, indeks lub partycji, użyj ALTER TABLE lub Zmianę INDEKSU instrukcji.Aby uzyskać ogólne informacje o kompresji, zobacz Tworzenie skompresowanego tabel i indeksów.

Ostrzeżenie

Jeśli istniejące dane jest pofragmentowany, można zmniejszyć jego rozmiar bez kompresji przez odbudowanie indeksu.Dla indeksów zostanie zastosowany współczynnik wypełnienia podczas przebudowy indeksu.Może to zwiększyć rozmiar indeksu.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sp_estimate_data_compression_savings 
     [ @schema_name = ] 'schema_name'  
   , [ @object_name = ] 'object_name' 
   , [@index_id = ] index_id 
   , [@partition_number = ] partition_number 
   , [@data_compression = ] 'data_compression' 
[;]

Argumenty

  • [ @schema_name= ] 'schema_name'
    Jest to nazwa schemat bazy danych , który zawiera tabela lub indeksowany widok.schema_nameis sysname.Jeśli schema_name ma wartość NULL, używany jest domyślny schemat bieżący użytkownik.

  • [ @object_name= ] 'object_name'
    Jest nazwą tabela lub indeksowany widok indeks jest na.object_nameis sysname.

  • [ @index_id= ] 'index_id'
    Jest to identyfikator indeksu.index_idjest int, i może mieć jedną z następujących wartości: numer identyfikacyjny indeks, NULL lub 0 Jeśli object_id jest sterty.Aby przywrócić informacje wszystkie indeksy dla tabela bazowa lub widoku, należy określić wartość NULL.Jeżeli określono wartość NULL, należy także określić wartość NULL dla partition_number.

  • [ @partition_number= ] 'partition_number'
    Jest numerem partycji, w obiekcie.partition_numberjest int, i może mieć jedną z następujących wartości: numer partycji indeksu lub sterty, NULL lub 1 nonpartitioned indeksu lub sterty.

    Aby określić partycję, można również określić $partycji funkcja.Aby przywrócić informacje dla wszystkich partycji będący właścicielem obiektu, należy określić wartość NULL.

  • [ @data_compression= ] 'data_compression'
    Jest to typ kompresji oceniane.data_compressionmoże to być jedna z następujących wartości: Brak, wiersza lub strony.

Wartości kodów powrotnych

0 (sukces) lub 1 (błąd)

Zestawy wyników

Następujące zestaw wyników jest zwracana do przewidują bieżące i szacowany rozmiar tabela, indeks lub partycji.

Nazwa kolumny

Typ danych

Opis

object_name

sysname

Nazwa tabela lub indeksowany widok.

schema_name

sysname

Schemat tabela lub indeksowany widok.

index_id

int

Identyfikator indeksu indeks:

0 = Sterty

1 = Indeks Clustered

>1 = Indeks nieklastrowany

partition_number

int

Numer partycji.Zwraca wartość 1 dla nonpartitioned tabela lub indeksu.

size_with_current_compression_setting (KB)

bigint

Rozmiar żądanej tabela, indeks lub partycji, jak obecnie istnieje.

size_with_requested_compression_setting (KB)

bigint

Szacowany rozmiar tabela, indeks lub partycji, która korzysta z ustawień kompresji żądanej; oraz, jeśli ma to zastosowanie, istniejący współczynnik wypełnieniai przy założeniu, że nie jest bez fragmentacji.

sample_size_with_current_compression_setting (KB)

bigint

Wielkość próbki z bieżącego ustawienia kompresji.Obejmuje wszelkie fragmentacji.

sample_size_with_requested_compression_setting (KB)

bigint

Rozmiar próbki, która jest tworzona za pomocą ustawienia kompresji żądanej; oraz, jeśli ma to zastosowanie, istniejący współczynnik wypełnienia i nie fragmentacji.

Uwagi

Użycie sp_estimate_data_compression_savings do oszacowania oszczędności, który może wystąpić podczas włączania tabela lub partycji dla wiersza lub strona kompresji.Dla wystąpienie jeśli średni rozmiar wiersza można zmniejszyć o 40%, może potencjalnie zmniejszyć rozmiar obiektu o 40%.Nie może być wyświetlony oszczędność miejsca na, ponieważ zależy to współczynnik wypełnienia i rozmiar wiersza.Na przykład jeśli wiersz jest 8000 bajtów i zmniejszyć jego rozmiar o 40%, mogą nadal dopasowanie tylko jeden wiersz na stronadanych.Nie ma żadnych oszczędności.

Jeśli wyniki pracy sp_estimate_data_compression_savings wskazują, że tabela będzie rosnąć, oznacza to, że wielu wierszy w tabela za pomocą prawie cały dokładności typów danych i dodanie małych narzutów potrzebnych do skompresowanego formatu jest większe niż niższe z kompresji.W tym rzadkich przypadeknie należy włączać kompresji.

Jeśli tabela jest włączona dla kompresji, należy użyć sp_estimate_data_compression_savings do oszacowania średni rozmiar wiersza, jeśli tabela jest nieskompresowany.

Podczas tej operacji (IS) blokada został nabyty w tabela .Jeśli nie można uzyskać (IS) blokada , procedury będą blokowane.tabela jest skanowany w obszarze odczytu popełnione poziom izolacji.

Jeśli ustawienie kompresji żądana jest taki sam jak bieżące ustawienia kompresji, procedura składowana zwróci szacowany rozmiar fragmentacji nie danych i używanie istniejący współczynnik wypełnienia.

Jeśli identyfikator indeksu lub partycja nie istnieje, są zwracane żadne wyniki .

Uprawnienia

Wymaga uprawnienia SELECT dla tabela.

Przykłady

Poniższy przykład oszacowuje rozmiar przedziału Production.WorkOrderRouting tabela w AdventureWorks2008R2 bazy danych, jeśli jest skompresowany za pomocą ROW kompresji.

USE AdventureWorks2008R2;
GO
EXEC sp_estimate_data_compression_savings 'Production', 'WorkOrderRouting', NULL, NULL, 'ROW' ;
GO